Go Down

Topic: Xbee collegato ad Arduino blocca l'esecuzione del programma. (Read 1 time) previous topic - next topic

waj007

Mar 10, 2013, 01:43 pm Last Edit: Mar 10, 2013, 03:58 pm by waj007 Reason: 1
Salve, ogni volta che collego Xbee tramite shield all'Arduino, questo smette di eseguire il codice che ho precedentemente scritto. Ho provato con programmi molto semplici: accensione del led 13 tramite tasto premuto da tastiera utilizzando il Serial Monitor.

Questo è il mio codice:
Code: [Select]
void setup()
{
 pinMode(13,OUTPUT);
 digitalWrite(13,LOW);
 Serial.begin(9600);
}
void loop()
{
 while(Serial.available())
 {
   char c=Serial.read();
   if(c=='a')
     digitalWrite(13,HIGH);
   if(c=='b')
     digitalWrite(13,LOW);
 }
 delay(10);
}


È come ho detto molto semplice, quando premo la lettera 'a' il led si accende, quando premo 'b' si spegne. Il programma funziona correttamente fino a  quando non collego Xbee all'Arduino. Infatti non appena lo collego se il led era acceso si spegne e una volta spento non risponde più ai miei comandi inviati da tastiera tramite Serial Monitor. Sapete darmi una spiegazione?!

Grazie.

leo72

Se blocchi il thread, come pensi che poi gli altri possano scriverci?  :P

waj007

Hai ragione, mi sono appena iscritto e non sono ancora molto pratico! Hai qualche idea per come risolvere il mio problema?

leo72

L'Xbee comunica via seriale.
A parte che non è sano per l'hardware fare collegamenti a caldo (ossia con l'Arduino sotto tensione), ma la presenza dell'Xbee disturba la comunicazione seriale perché entrambi occupano i pin 0 e 1.

waj007

Ok. Ora il mio obiettivo è quello di accendere e spegnere il led 13, sempre premendo tasti da tastiera, ma questa volta il segnale deve essere trasmesso dall'Xbee collegato al pc a quello sull'Arduino. Quindi utilizzo sempre il Monitor Seriale ma questa volta come porta COM gli indico quella dell'Xbee collegato al pc. Ma al premere dei tasti dalla tastiera non succede assolutamente nulla e il led rimane spento. Gli Xbee sono entrambi configurati correttamente, (Destination Address HIGH - Destination Address LOW - 9600 baud). C'è una spiegazione?!

sciorty

Come ha detto leo l'xbee con la shield probabilmente occupa i pin tx ed rx per comunicare con l'arduino, gli stessi che utilizza per comunicare anche con la usb.
Ora, se tu hai un arduino che riceve i valori su quei pin dall'xbee non dovresti avere problemi, se invece nel frattempo apri anche il monitor seriale occupi lo stesso canale di comunicazione e non si va da nessuna parte..

waj007

Se non posso aprire il Monitor Seriale cosa dovrei usare per far comunicare i 2 Xbee? Dovrei aver bisogno di un qualcosa nel quale poter inserire i valori da tastiera per poi inviarli tramite l'Xbee (collegato al pc) a quello collegato all'Arduino. Come devo fare?!

sciorty

L'xbee al pc com'è collegato? Tramite un arduino o tramite un convertitore?
Se tramite un convertitore non hai problemi e basta aprire un monitor seriale come xctu e scriverci.
Se tramite computer allora devi spostare i pin tx ed rx dell'xbee su altri che non siano lo 0 ed 1 dell'arduino, creando una seconda seriale con la NewSoftSerial.h, ma dubito questo discorso valga su di una shield

waj007

L'Xbee è collegato al computer tramite shield ( http://www.robot-italy.com/en/xbee-usb-board.html ). Provo ad aprire il monitor seriale da X-ctu poi vi dico se ho risolto il problema!

sciorty


L'Xbee è collegato al computer tramite shield ( http://www.robot-italy.com/en/xbee-usb-board.html ).


Chiamalo convertitore quello da ora in poi :p non dovresti avere problemi così!

waj007

Ok, il codice che ho postato all'inizio va modificato se utilizzo il monitor seriale di X-ctu?!

sciorty

Non hai ben capito..
Quel monitor, come qualsiasi altro monitor, ti permette di scrivere dei dati su di una porta seriale(in questo caso il convertitore usb xbee) da tastiera, nulla di più..

uwefed

Allora la configurazione é pc-> usb-> Adattatore-> XBee 1 e XBee 2 -> Shield->Arduino .

Hai installato il driver per il FT232RL? Se hai un Arduino 2009 o Nano lo hai giá installato.
Hai selezionato la porta giusta nel IDE?

Se hai inizializzato i XBee con X-CTU dovresti aver installato il driver correttamente.

Ciao Uwe

waj007

Grazie a tutti per la pazienza, ieri in laboratorio ho resettato l'Xbee ed è andato tutto aposto! Ora riesco a farli comunicare come volevo e i programmi caricati non si cancellano più!  :)

Go Up