Loading...
Pages: [1]   Go Down
Author Topic: problemi con SoftSerial sulla Leonardo  (Read 202 times)
0 Members and 1 Guest are viewing this topic.
torino, italy
Offline Offline
Sr. Member
****
Karma: 0
Posts: 335
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: 335
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

Forum Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 219
Posts: 16431
Don't know what I do
View Profile
 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: 74
Posts: 7340
"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
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quindi ha 2 seriali?  smiley-red
Logged

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 74
Posts: 7340
"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
Print
 
Jump to: