Xbee collegato ad Arduino blocca l'esecuzione del programma.

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:

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.

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

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

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.

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?!

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

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?!

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

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!

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

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

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

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ù..

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

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ù! :slight_smile: