problemi con SoftSerial sulla Leonardo

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:

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:

#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;
  }
}

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.

secondsky: 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.

leo72: 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.

Quindi ha 2 seriali? :blush:

PaoloP: Quindi ha 2 seriali? :blush:

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.