In questo post impareremo ad utilizzare la porta seriale USB per comunicare dati dal computer alla scheda di controllo. In altre parole: inviare informazioni e comandi alla tua scheda con il cavo USB.
La comunicazione avviene per mezzo di due componenti, un trasmettitore ed un ricevitore. Per fare ciò, abbiamo bisogno di due cose:
- Un programma nella scheda di controllo che spedisce/riceve dati. (useremo bitbloq)
- Un programma nel computer che spedisce/riceve dati. (Useremo il Monitor Seriale di Arduino)
Apri bitbloq e scarica Arduino IDE. Se hai una scheda ZUM BT-328 o una FreaduinoUNO, collegala al computer tramite il cavo USB… E si parte!
“Robonauta chiama Eco Base, mi ricevi?”
SCRIVERE TRAMITE PORTA SERIALE
Il prossimo esempio invia la parola ‘BLACK‘ dalla scheda di controllo quando un sensore IR rileva questo colore. Collega il sensore al pin 3 digitale:
Parte 1: Trasmissione – Programmata con bitbloq
Per programmare la scheda e inviare dati con bitbloq, tutto ciò che ti occorre è il blocco Serial Print.
Questo fa diventare semplice creare un programma che compara il valore del sensore ogni secondo (1000 ms) e se è corretto, invia la parola. Carica questo programma sulla tua scheda:
Parte 2: RICEVITORE – Usando il monitor seriale della IDE di Arduino
Come detto precedentemente, useremo il Monitor Seriale della IDE di Arduino. Con la scheda collegata, apri il programma Arduino e chiudi bitbloq.
Seleziona la scheda di controllo nel menu Strumenti/Scheda. Se stai utilizzando la ZUM BT-328 seleziona la scheda “Arduino BT w/ATmega328” o se stai utilizzando la scheda FreaduinoUNO, seleziona “Arduino UNO“.
Seleziona la porta seriale a cui è collegata la tua scheda dal menu Strumenti/Porta:
Ora possiamo avviare il Monitor Seriale dal menu Strumenti/Monitor Seriale.
Apparirà questa finestra dove andremo a verificare che la velocità di trasmissione è impostata su 9600 baud.
Se il sensore ad infrarossi inizia a rilevare, la parola ‘NERO’ apparirà ripetutamente sul video:
Per vedere i risultati in modo più ordinato, possiamo usare il blocco “Serial PrintIn”:
Questo fornirà una risposta più comprensibile:
LEGGERE LA PORTA SERIALE
Parte 1: RICEVITORE – Programmato con bitbloq
In questo esempio il ricevitore è la scheda di controllo. Per ogni dato ricevuto dalla scheda, useremo il blocco Bluetooth Serial Available do per verificare se è arrivato qualche dato alla porta seriale:
Se ricevuto, leggeremo il dato ricevuto e lo salveremo come una variabile:
Ora possiamo eseguire una comparazione e reagire di conseguenza al dato ricevuto. Per esempio, se riceviamo una A maiuscola, accenderemo il LED sulla scheda (D13). Oppure per qualsiasi altro dato ricevuto, spegneremo il LED. Questo è il programma:
“Ma aspetta, hai comparato il dato con il numero 65?! –” Ovviamente, caro robonauta, perchè bitbloq non ha un blocco per comparare variabili di testo char al momento, (è possibile solamente con le stringhe). Non preoccuparti se questo suona come greco per te, tutto quello che ti serve sapere in questo esempio è che stiamo utilizzando numeri per identificare lettere.
La lettera A corrisponde al numero decimale 65 nel ASCII code (guarda la abella alla fine di questo post).
Parte 2: TRASMETTITORE – Usando il Monitor Seriale della IDE di Arduino
Ora la scheda è pronta per ricevere. Chiudi bitbloq e apri nuovamente il Monitor Seriale della IDE di Arduino. Questa volta assicurati di selezionare l’opzione “Nessun fine riga” ed anche la velocità di 9600 baud.
Scrivi una A maiuscola e premi Invia. Il LED si accende? Prova a inviare qualsiasi altro carattere per spegnere il LED D13.
Qui sotto puoi vedere la tabella ASCII così da poter comparare lettere e caratteri trasmessi attraverso la porta seriale: