Ben ritrovati. Prima di dare un’occhiata agli sketch già pronti per abituarci ad usare Tinkercad, diamo un’occhiata al codice, in modo da richiamare per chi ha seguito la prima stagione della serie su Arduino (non preoccupatevi, è in arrivo l’ebook sull’argomento) ovvero da introdurre per i nuovi arrivati (a proposito, benvenuti) i primi elementi di programmazione per Arduino (e non solo, come vedrete).

Riprendiamo lo sketch che abbiamo visto nella puntata precedente.
La prima parte è destinata alle dichiarazioni delle variabili. E’ una buona abitudine (nonché una regola, non solo per Arduino) dichiarare le variabili (così come le librerie e i moduli, ma ne parleremo in seguito) all’inizio del listato, in modo che siano caricate all’avvio prima delle istruzioni vere e proprie.
Vediamo cosa abbiamo dichiarato in questo caso:
int led_red = 0;
int led_yellow = 1;
int led_green = 2;

Abbiamo detto al nostro interprete, che si preoccuperà di tradurre questo sketch per Arduino, che vogliamo che la variabile led_red
è un numero intero (int
è n numero naturale positivo, da 1 ad infinito) ed è collegato/assegnato ad un pin, cioè ad una uscita del nostro Arduino, in questo caso il pin 0. L’attribuzione avviene con l’utilizzo del segno =
, come in molti altri linguaggi di programmazione. Per semplicità, dallo sketch ho eliminato i commenti, che però è opportuno mettere sia per ricordare che per far comprendere ad altri i passaggi e la logica del programma. I commenti vengono indicati con //
. Tutto ciò che è sulla riga dopo le due sbarre oblique non viene interpretato dal software.
Il codice del programma è di solito raggruppato in due funzioni, chiamate void
. Una contiene solo quelle istruzioni che devono essere attivate all’avvio o comunque una volta sola, di nome void setup()
, l’altra le istruzioni che occorre ripetere, non a caso si chiama void loop()
(loop = circuito, cerchio). Le istruzioni all’interno delle funzioni sono racchiuse in parentesi graffe {}
, una dopo il nome della funzione, una sul primo rigo successivo all’ultima istruzione.
Nella void setup()
indichiamo il senso della corrente nei pin. Infatti, alcuni pin possono essere solo entrata, solo uscita o entrata/uscita. In questo caso, occorre indicare al rpogramma che i pin sono tutti in uscita con il comando pinMode()
. I parametri del comando sono inseriti in una parentesi tonda subito attaccata al nome. In questo caso i parametri sono due, ovvero la variabile di riferimento, e il suo valore. Nel caso del pin, INPUT o OUTPUT. In questo caso, ovviamente OUTPUT.
void setup() {
// set up all the LEDs as OUTPUT
pinMode(led_red, OUTPUT);
pinMode(led_yellow, OUTPUT);
pinMode(led_green, OUTPUT);
}

Nella void loop()
, invece, indichiamo il codice del programma vero e proprio. Per accendere il led occorre indicare alla variabile relativa al pin il valore HIGH, mentre per spegnere il led il valore della variabile deve essere LOW.
Per questo, per accendere solo il pin rosso, il codice è
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, LOW);
Facciamo trascorrere qualche secondo in modo da far percepire bene il cambio di colore, poi cambiamo i valori dei pin in modo da far accendere il led successivo e così via.
L’istruzione per ritardare l’azione successiva, che altrimenti sarebbe immediata e non ci permetterebbe di vedere bene il passaggio di colori, è delay()
, con nella parentesi tonda il valore numerico intero espresso in millisecondi (2 secondi = 2000 millisecondi) dell’attesa. Questa è tutta la funzione void loop()
:
void loop() {
// turn the green LED on and the other LEDs off
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, HIGH);
delay(2000); // wait 2 seconds
// turn the yellow LED on and the other LEDs off
digitalWrite(led_red, LOW);
digitalWrite(led_yellow, HIGH);
digitalWrite(led_green, LOW);
delay(1000); // wait 1 second
// turn the red LED on and the other LEDs off
digitalWrite(led_red, HIGH);
digitalWrite(led_yellow, LOW);
digitalWrite(led_green, LOW);
delay(3000); // wait 3 seconds
}
E questo è tutto. Alla prossima puntata…