Go Down

Topic: problema con SoftwareSerial e NewSoftSerial (Read 5647 times) previous topic - next topic

ƎR

si ho appena notato :) ma mi chiedevo per la sola trasmisione c'è bisogno dei 2 collegamenti o ne basta anche solo uno tra il TX e RX?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ratto93

in teoria ne dovrebbe bastare una, però mi par d'aver letto che uno dei due pin serve per sincronizzare la comunicazione in fase di partenza... fai una prova al volo... al momento non ho i tiny collegati per provare...
Se corri veloce come un fulmine, ti schianterai come un tuono.

ƎR

ok adesso non ho nessun arduino sotto mano, domani provo... è che sto progettando un circuito stampato e mi risparmierei un collegamento "inutile" se inutile è :)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

lesto

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ƎR

Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Provate la NewSoftSerial con la ultima modifica, così mi fate sapere se va.

ƎR

purtroppo, sono molto impegnato con la scuola in quuesti giorni :( ma proverò il prima possibile ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

non ho ancora provato la newsoftware serial con le ultime modifiche sui tiny :(
però oggi stavo provando la newsoftware serial con 2 arduino mega...
ho caricato questo codice su entrambi:
Code: [Select]
#include <NewSoftSerial.h>
NewSoftSerial er(62, 63);

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

void loop()
{
if (er.available())
Serial.print((char)er.read());

if (Serial.available()){
er.print((char)Serial.read());}
}


e ho collegato gli rx e tx creati da software tra loro. quindi aprendo contemporaneamente i 2 serial monitor dovrei inviare un dato da uno e riceverlo sull'altro, ma questo non succede... analizzando con qualche led mi pare che il problema sia in ricezione perchè c'è una variazione del segnale ma non viene percepita dall'arduino ricevitore

qualcuno sa perchè succede ciò? ho dimenticato qualcosa? (arrivo da un periodo di inattività :smiley-sweat: )
grazie a tutti in anticipo ;)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

confermo che il problema è in ricezione... è strano perchè c'è un esempio molto simile anche sul reference  :~
http://arduino.cc/en/Reference/SoftwareSerial
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

sono riuscito a capire che non è colpa della libreria, o almeno con un arduino 2009 funziona...
forse è perchè nel pin 62 del mega non è abilitato a ricevere  :~  ma nel reference c'è scritto che può essere usato, qualcuno mi da una mano a capire meglio la situazione?
grazie :)
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

ƎR

alla fine ce l'ho fatta da solo XD adesso va, ho scaricato la versione newsoftserial12 e ho inserito la funzione listen... ma sinceramente non so quale di questi passaggi sia quello che ha determinato il funzionamento :smiley-sweat:, qualcuno sa spiegarmelo? grazie :)

Code: [Select]
#include <NewSoftSerial.h>
NewSoftSerial er(62,63);

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

void loop()
{
er.listen();
if(er.available())
Serial.print((char)er.read());

if (Serial.available()){
er.print((char)Serial.read());}
}
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

lesto

stai usando l'ide arduino 1.0, che modifica un bel pò le librerie.

in particolare nel tuo caso aggiunge l'istruzione: listen(); che attiva l'ascolto della classe NewSoftSerial. Questo perchè solo una NewSoftSerial alla volta può funzionare (questione di tempi di risposta credo), e quindi per poter avere più seriali virtuali hanno adottato questo trucco per attivare la NewSoftSerial corrispondente.

altre info: http://arduino.cc/en/Reference/SoftwareSerialListen

ps. USA IL REFENCE, ti risparmi un sacco di sbattimenti inutili
sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ƎR

no, sto usando la 0022 e i refence li ho già letti quasi tutti... tuttavia non ho capito gran che... :smiley-red:
io dovrei utilizzare 3 seriali sw e 3 seriali hw, ma non riesco a far andare 3 seriali sw contemporaneamente... una sola si ma 3 no...  :~

ma siccome 4 di queste seriali vengono utilizzate 1 alla volta potrei collegarle tutte assieme su un rx hw e farle andare una alla volta con degli enable, no? si tratta di un arduino che deve ricevere, solo ricevere, dei dati da 4 ATtiny, quindi potrei impostare i tiny che quando non devono inviare dati il pin tx diventa rx.... non so se mi sono spiegato bene  :smiley-sweat: secondo voi è fattibile?? o è un'idea che funzionaa solo nella mia testa
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

leo72

Come ti ha detto Lesto, non puoi mettere in ascolto più di una seriale software contemporaneamente.

Ma se i dati devono arrivare tutti ad un Arduino, perché non usi il bus I2C?
Per i Tiny esiste una libreria TinyWire che implementa la I2C via software. Ad ogni Tiny assegni un ID differente e poi fai spedire tutto all'Arduino. Alla ricezione dei dati, sai già chi ha spedito grazie all'I2C.

ƎR

eheh lo so, ma a me non piace usare la I2C perchè non sono ancora riuscito a capire come funziona  :smiley-sweat:
se provo a fare quello che ho detto prima, secondo voi può funzionare?
Riccardo Ertolupi of the Vicenza Thunders Team: http://www.VicenzaThunders.com

Go Up