Scrivi il primo programma per Arduino: il blink

In questo tutorial, vedrai come è strutturato un programma nel linguaggio semplificato Arduino e comincerai a conoscere le prime strutture del linguaggio.

Man mano che introdurremo nuove istruzioni spiegheremo la sintassi e il significato, oltre che le modalità di utilizzo.

Il valore di Arduino è proprio quello di consentire di imparare il suo linguaggio in modo graduale e intuitivo, ragionando per differenza rispetto agli esempi presentati o reperibili su Internet.



Nel riquadro che segue è riportata una versione “in bella copia” del programma mostrato sul video.

Ti consigliamo di scrivere tu stesso da zero il programma per iniziare a fare pratica con l’editor e l’attività di coding, ma per brevità puoi cliccare sul comando di copi posto nell’angolo in alto a sinistra del riquadro e incollare il tutto nella finestra vuota dell’editor Arduino.

Se usi questa strada, ricordati di cancellare tutto ciò che eventualmente è già presente nella finestra dell’editor, per evitare duplicazioni delle due funzioni loop e setup.

// Sketch Arduino per pilotare
// un LED collegato sul PIN 8

void setup() {
 // Imposto il PIN 8 in modalità OUTPUT
 pinMode(8, OUTPUT);
}

void loop() {
 // Accendo il LED
 digitalWrite(8,HIGH);
 // Attendo 1 secondo
 delay(1000);
 // Spengo il LED
 digitalWrite(8,LOW);
 // Attendo 1 secondo
 delay(1000);
}

setup e loop sono due funzioni, la cui definizione segue la sintassi del C++.

In C++ una funzione è un blocco di programma, a cui viene attribuito un nome, che può essere richiamato all’interno di un altro blocco di programma.

Una funzione può “ricevere” dei parametri e può “restituire” un valore di qualche tipo.

Nel caso delle funzioni setup e loop, non viene passato nessun parametro e non viene restituito alcun valore.

La parola void posta prima del nome della funzione indica che non viene restituito alcun valore, mentre eventuali parametri avrebbero dovuto essere specificati tra parentesi tonde dopo il nome della funzione. Sia dopo il nome setup che dopo il nome loop è presente una coppia di parentesi ma senza alcun parametro all’interno. Anche se non sono definiti parametri le parentesi devono essere definite lo stesso.

Il blocco di istruzioni di cui è composta la funzione è racchiuso tra parentesi graffe. Sia la funzione setup che loop, hanno la parentesi graffa aperta dopo la coppia di parentesi tonde e terminano con una parentesi graffa chiusa.

pinMode, digitalWrite e delay non sono istruzioni native del linguaggio C++ ma sono funzioni definite dal progetto Arduino. Come tutte le funzioni possono prevedere il passaggio di parametri. La funzione pinMode prevede due parametri: il numero del PIN e la modalità a cui deve essere impostato. La funzione digitalWrite prevede due parametri: il numero del PIN da impostare e il valore che vogliamo impostare. La funzione delay prevede un solo parametro che è il numero di millisecondi per cui il sistema deve restare in pausa. I parametri sono racchiusi tra parentesi tonde poste dopo il nome della funzione richiamata.

Il blocco di programma che si trova nella definizione delle funzioni pinMode, digitalWrite e delay non è presente nel nostro programma. Il nostro programma definisce il codice per le due funzioni setup e loop. Il codice delle funzioni Arduino come quelle che abbiamo richiamato è contenuto in altri file chiamati librerie.

Il progetto Arduino è composto da numerose librerie che possono essere richiamate all’interno dei nostri programmi. Le funzioni definite all’interno di queste librerie contengono tutti i dettagli complicati. L’uso delle librerie libera il programmatore dalla conoscenza di questi dettagli e consentono di concentrare l’attività di sviluppo solo sulla logica essenziale del proprio prototipo.

Un programma Arduino è denominato sketch.