In questo tutorial vedrai come scrivere uno sketch per leggere il valore che si trova su un PIN digitale di Arduino e scoprirai un’altra importante funzione offerta da Arduino: la capacità di inviare dati al tuo computer attraverso il collegamento USB.
Per tua comodità il codice dello sketch presentato nel video è riportato nel riquadro che segue.
// Sketch Arduino per la lettura
// di un semplice sensore digitale
// collegato sul PIN 8
void setup() {
// Inizializzo la comunicazione seriale verso il PC
Serial.begin(9600);
// Imposto il PIN 8 in modalità INPUT
pinMode(8, INPUT);
}
void loop() {
// Dichiaro una variabile di tipo intero
int valore;
// Leggo il valore del PIN 8
valore = digitalRead(8);
// Invio il valore verso il terminale
Serial.println(valore);
// Pausa di mezzo secondo
delay(500);
}
Come hai visto nel video, Arduino può inviare dati al computer attraverso la porta seriale virtuale che viene creata quando la scheda è collegata tramite il cavo USB. Si tratta della stessa porta seriale attraverso la quale avviene il caricamento del firmware, cioè del tuo sketch tradotto in linguaggio macchina per il miocrocontrollore.
Approfondirai le comunicazioni seriali nella tua prossima missione.
In questa fase possiamo semplicemente osservare che per trasmettere un dato numerico al computer occorre inizializzare la linea di comunicazione attraverso la funzione Serial.begin(…), dove tra parentesi deve essere indicata la velocità di trasmissione e da quel momento è possibile utilizzare funzioni come la Serial.println che permettono di trasmettere informazioni verso il computer.
Per visualizzare sul tuo PC ciò che viene ricevuto sulla linea seriale, è necessario utilizzare l’utility “Monitor Seriale” incorporata nell’IDE di Arduino. Il monitor seriale deve essere impostato alla stessa velocità di comunicazione impostata su Arduino attraverso la Serial.begin.
L’altro elemento importante presente in questo sketch è l’utilizzo della variabile che è stata chiamata “valore”.
In un linguaggio di programmazione, si definisce “variabile” un nome liberamente assegnato dal programmatore a cui viene associato un tipo di dato. Nel nostro caso abbiamo scelto come nome “valore” e gli abbiamo assegnato il tipo “int“.
“valore” è un nome scelto da noi, mentre “int” è una parola chiave del linguaggio Arduino e identifica i numeri interi.
Attraverso l’istruzione “int valore;” abbiamo chiesto al microcontrollore di riservare un’area nella sua memoria RAM di dimensione adatta a contenere un numero di tipo intero.
La chiamata alla funzione Arduino “digitalRead(8);” causa la lettura del valore di tensione presente sul PIN 8, precedentemente configurato come INPUT, e la “restituzione” di un valore pari a 0, oppure ad 1.
L’operatore “=” è chiamato operatore di assegnazione. L’istruzione “valore = digitalRead(8);” vuol dire: “leggi il valore (0 oppure 1) presente sul PIN 8 e assegnalo (memorizzalo) alla (nella) variabile ‘valore’ “.
Attraverso il nome della variabile è possibile fare riferimento al valore memorizzato al suo interno.
L’istruzione Serial.println(valore); invia sulla linea seriale il numero memorizzato nella variabile valore.
Usiamo la funzione Serial.println e non la funzione Serial.print perché vogliamo che dopo il numero venga anche inviato un carattere di “a capo” detto anche “new line“, in modo che sul terminale seriale i numeri vengano visualizzati uno per riga.