Go Down

Topic: problemi con SoftSerial sulla Leonardo (Read 622 times) previous topic - next topic

secondsky

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: [Select]

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: [Select]

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

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.

leo72


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.

astrobeed


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.

PaoloP

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

Go Up