Pages: [1]   Go Down
Author Topic: problemi con SoftSerial sulla Leonardo  (Read 552 times)
0 Members and 1 Guest are viewing this topic.
torino, italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 339
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti, ho un po' di problemi con la libreria SoftSerial e la Leonardo.
Se uso una UNO per comunicare della seriale virtuale ai pin 0 e 1 della leonardo riesco, ma non mi riesce il contrario.

Quel che voglio fare è questo: inviare dati dal computer a una leonardo con la normale seriale, poi dalla leonardo comunicare con una micro (che in pratica è una leonardo anche lei) attraverso la seriale virtuale.

Questo uno dei tanti codici che ho provato per provare a stabilire una connessione, funziona solo quando la leonardo usa la sua seriale non virtuale, quindi come ricevente in questo caso:


trasmittente:
Code:
void setup() {
  // initialize serial:
  Serial.begin(9600);

     while (!Serial); // wait for serial port to connect. Needed for Leonardo only
}

void loop()
{
  delay(3000);
  Serial.println("prova");
}


ricevente:

Code:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX

String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

void setup() {
  Serial.begin(9600);

    while (!Serial); // wait for serial port to connect. Needed for Leonardo only
    mySerial.begin(9600);
 
  inputString.reserve(200);
}

void loop() {

   if (mySerial.available()) {

    char inChar = (char)mySerial.read();

    inputString += inChar;
 
  if (inChar == '\n') {
      stringComplete = true;
    }
  }
 
  if (stringComplete) {
    Serial.println(inputString);
    // clear the string:
    inputString = "";
    stringComplete = false;
  }
}
Logged

torino, italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 339
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo di aver risolto: sulla Leonardo bisogna distinguere tra Serial1 e Serial se si parla di usb o di pin 0 e 1, era specificato in evidenza nel sito nella pagina della Leonardo appunto.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 327
Posts: 22658
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Credo di aver risolto: sulla Leonardo bisogna distinguere tra Serial1 e Serial se si parla di usb o di pin 0 e 1, era specificato in evidenza nel sito nella pagina della Leonardo appunto.
E' vero. Serial specifica la connessione interna verso l'USB.
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 125
Posts: 9332
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E' vero. Serial specifica la connessione interna verso l'USB.

Che è indipendente dalla UART hardware, infatti sulla Leonardo è possibile comunicare col pc, o programmare Arduino, anche se la UART è impegnata su un device esterno.
Logged

Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7079
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quindi ha 2 seriali?  smiley-red
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 125
Posts: 9332
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quindi ha 2 seriali?  smiley-red

No solo una, intesa come UART hardware, però la comunicazione USB col pc è indipendente da questa perché la gestione avviene tramite hardware dedicato contenuto nel micro.
Negli altri modelli di Arduino la comunicazione USB avviene tramite la UART e un convertitore USB-Seriale esterno al micro, questo comporta l'impegno dell'UART sia per programmare Arduino che per le comunicazioni col pc.
Logged

Pages: [1]   Go Up
Jump to: