Robot Beginner Radio è una evoluzione del Beginner Robot che ho realizzato nello scorso weekend.
Nei precedenti articoli dedicati ai moduli XBee hai letto come configurarli e come accendere un led controllato da un potenziometro remoto.
E’ ora di passare al controllo motori e cosa c’è di più divertente che provare un controllo motori su un robot?
Il trasmettitore del Robot Beginner Radio
Questo primo articolo è dedicato al trasmettitore del Robot Beginner Radio che pur se assemblato in modo semplice come panettone di shield presenta un passaggio a cui devi prestare attenzione per comprendere il suo funzionamento.
Il materiale necessario
Costruire il telecomando del robot è semplice, ti occorre:
- n.1 Arduino Uno
- n.1 Adattaore XBee Arduino
- n.1 Modulo XBee
- n.1 Joystick Shield
- n.2 cavetti per breadboard M/F
- n.2 pin a saldare di tipo femmina
Montaggio del telecomando del Robot Beginner Radio
Disponi i componenti: Arduino Uno, l’adattatore XBee ed il modulo XBee, la Joystick shield:
la prima shield da montare è l’adattore XBee ed il modulo:
monta la joystick shield, siccome il modulo xbee che ho utilizzato possiede un’antenna in corrispondenza del joystick le due schede non possono essere montate in modo standard l’una sull’altra ma devi montare la joystick shield solo attraverso il connettore A0-A5 presente su di essa:
questo comporta due particolarità:
1. i pin A0 ed A1 della joystick shield, corrispondenti ai segnali del joystick Y ed X come riportato nel sito del produttore: Input shield, saranno in realtà collegati rispettivamente ai pin A5 (Y) e A4 (X):
2. il connettore di alimentazione della joystick shield non è connesso all’alimentazione arduino e questo comporta che la shield non riceve allimentazione, per darle i 5v di cui ha bisogno per funzionare devi utilizzare i due cavetti per breadboard che collegherai come in figura:
quando alimenterai arduino attraverso il suo connettore di alimentazione anche le due shield sovrastanti saranno alimentate, l’adattatore sbee attraverso il contatto diretto con i +5v e Gnd di arduino e la joystick shield attraverso i due cavetti dall’adattatore xbee.
Lo sketch del trasmettitore del Robot Beginner Radio
/* * * Sketch di Trasmissione xBee Robot Beginner Radio * * @autor Mauro Alfieri * @url: https://www.mauroalfieri.it * twitter: @mauroalfieri * */ int joyX = A4; int joyY = A5; void setup() { Serial.begin(57600); pinMode( joyX,INPUT ); pinMode( joyY,INPUT ); } void loop() { int potX = map(analogRead( joyX ),0,1023,0,255); int potY = map(analogRead( joyY ),0,1023,0,255); Serial.write(potX); Serial.write(potY); delay(10); }
leggendo lo sketch ti sarai reso conto che non è molto differente dallo sketch utilizzato per l’accensione del led in dissolvenza, le linee 11-12: definisci due variabili di tipo integer a cui assegni i pin relativi ai segnali provenienti dall’asse X e dall’asse Y del joystick;
linea 15: inizializza la comunicazione seriale a 57600 baud;
linee 17-18: imposta entrambi i pin A4 ed A5 come pin di INPUT in quanto saranno quelli da cui leggi il valore dell’asse corrispondente del joystick;
linea 22: imposta una nuova variabile di tipo integer ( potX ) il cui valore sarà quello letto sull’asse X del potenziometro, per farlo usa il comando analogRead() e converti il risultato in valori 0-255 con il comando map().
Notice
I valori letti da ogni pin analogico variano da 0 a 1023 mantre i valori di PWM con cui controllerai i motori sono 0-255 per cui il comando map ti consente di convertire il range 0-1023 letto sul pin A4 in scala 0-255;
linea 23: è identica alla 22 a meno del pin da cui leggi il valore da assegnare a potY;
linee 24-25: scrivi sul canale seriale i valori di potX e potY in sequenza, questi valori sono scritti in modalità binaria usando il metodo write() dell’oggetto Serial;
linea 26: attendi 10 millisecondi prima di eseguire un altro loop() questo evita continui reset di arduino durante l’esecuzione dello sketch.
Notice
Ricorda che un joystick è composto da un potenziometro da 10K per ciascun asse la cui posizione centrale corrisponde a 1/2 del valore letto sul pin analogico per cui in posizione centrale leggerai su A4 ed A5 il valore 512 e convertito in scala 0-255 sarà 127.
La scala di posizione per ciascun asse andrà da 127-255 da un lato e da 127-0 dall’altro.
Buona costruzione;