Arduino: come iniziare a programmarlo

DiFabio Gangemi

Arduino: come iniziare a programmarlo

Nei precedenti articoli, “Arduino: Cos’è e come funziona”, “Arduino: Com’è fatto. Pin, ingressi e uscite”, ho cercato di riportare nel modo più breve e semplice possibile cosa sia Arduino, a cosa serve, come lo stesso funzioni e com’è fatto fisicamente.

Spero di esserci riuscito. Qualora così non fosse, perdonatemi!! Abbiate pietà di me!! Vista la vastità del mondo di Arduino ho cercato di tagliare il più possibile per passare fin da subito dalla teoria alla pratica perché secondo me attraverso quest’ultima si impara meglio.

Rimango sempre a vostra disposizione e accetto ben volentieri critiche e consigli.

Ritornando a noi, il secondo passo da fare per iniziare ad utilizzare Arduino sta nell’imparare a programmarlo. Sicuramente molti di voi sono impazienti e vorrebbero fin da subito cominciare a mettere mano a progetti di un certo livello di difficoltà.

Nulla di più sbagliato!!

Se siete alle prime armi con Arduino, “linguaggi di programmazione”, la logica di funzionamento dei programmi, cominciate a muovere i primi passi partendo dalle basi.

Non abbiate fretta!!

Bastano 5 minuti per scaricare “l’IDE, l’ambiente di sviluppo integrato”, installarlo e cominciare cosi a creare il nostro primo “Sketch”.

Nota: i programmi creati per Arduino vengono chiamati “Sketch”. Nelle righe successive realizzerete il primo programma o meglio, “Sketch”.

La prima cosa da fare per iniziare programmare Arduino sta nell’installare “l’IDE, l’ambiente di sviluppo integrato” che trovate sul sito ufficiale “Arduino.cc”.

Scegliete quello più adatto al vostro sistema operativo, effettuate il download dello stesso ed eseguite la procedura di installazione.

Una volta installato, avviatelo e vi ritroverete di fronte ad una schermata simile a questa:

Arduino IDE Ambiente di sviluppo integrato

All’interno dell’area di lavoro, dove scriverete i vostri programmi, troverete sempre i seguenti blocchi “void setup” e “void loop”.  

Nota: in uno “sketch” di Arduino non possono assolutamente mai mancare i blocchi “void loop” e “void setup”.

Al primo avvio dell’ambiente di sviluppo di Arduino e ogni volta che creerete un nuovo progetto cliccando su “File>Nuovo” in alto a sinistra, oppure da tastiera premendo contemporaneamente i tasti “Ctrl+N”, vi ritroverete di fronte ad una schermata contenente il testo seguente che all’inizio potrebbe sembravi senza senso.

“void setup() {
  // put your setup code here, to run once:
}
void loop() {
  // put your main code here, to run repeatedly:
}”

I blocchi “setup” e “loop” servono per inserire le istruzioni che andranno a comporre il nostro sketch.

  • void setup, in questa sezione vanno inserite tutte le istruzioni che devono essere eseguite una sola volta all’accensione di Arduino.
  • void loop, in questa sezione vanno inserite tutte le istruzioni che vengono ripetute all’infinito finché Arduino viene alimentato.

Oltre alle sezioni “setup” e “loop” vi sono altre due sezioni che contengono i simboli “//” e successivamente del testo. Queste sezioni servono solamente all’utente per riportare delle indicazioni utili, degli appunti.

Un altro modo per inserire del testo sta nello scrivere i simboli “/*” il testo da scrivere su più colonne e infine terminare il tutto con i simboli “*/”.

In breve se si vuole scrivere un testo per il quale basta una sola riga bisogna usare i simboli “//” e successivamente scrivere quanto vogliamo. Se si vuole scrivere un testo che occupa più righe bisogna racchiudere lo stesso all’interno dei simboli “/*” e “*/”.

Nota: Quanto viene inserito come testo attraverso i simboli “//” oppure “/*” e “*/” non viene minimamente considerato dal programma.

Per imparare a programmare Arduino il primo esercizio che viene svolto e che vi consiglio, sta nel creare uno sketch da caricare poi sulla piccola schedina elettronica al fine che faccia lampeggiare un led secondo dei tempi da noi impostati.

Cominciamo!!

Visto che siamo all’inizio non scriveremo il nostro primo sketch partendo completamente da zero ma giusto per iniziare a capire come funziona la programmazione di Arduino, caricheremo uno degli sketch di base cosi da analizzare la sua struttura e successivamente da apportare delle piccole modifiche allo stesso. Questo vi consentirà di verificare anche che tutto funzioni correttamente.

Ecco cosa dovete fare:

  • Avviate l’ambiente di sviluppo di Arduino;
  • Aprite il file di esempio che trovate cliccando in alto a sinistra su File > Esempi > Basics > Blink;
  • Si aprirà una finestra con uno sketch già scritto. Non preoccupatevi di quello che c’è riportato nell’area di lavoro. Analizzeremo il tutto successivamente;
  • Collegate Arduino a vostro computer tramite il cavo USB;
  • Verificate a questo punto che sia selezionata la porta corretta in Strumenti > Porta > …. Se state usando windows dovreste trovare una voce del tipo COMX (Arduino/Genuino Uno); Se state usando MAC dovrebbe apparire qualcosa del tipo /dev/tty.usbmodemXXX, mentre su GNU/Linux troverete /dev/ttyACM0 o /dev/ttyS0 o S1;
  • Verificate adesso di aver impostato anche la scheda corretta che state usando da Strumenti > Scheda > Arduino/Genuino Uno. (Se state usando una scheda diversa da Arduino/Genuino Uno, selezionate dall’elenco quella da voi in uso);
  • Premete adesso sul pulsante “Verifica” il primo in alto a sinistra sulla toolbar; L’ambiente di sviluppo di Arduino inizierà a controllare che il programma presente nell’area di lavoro sia stato scritto in modo corretto. Durante la fase di verifica vedrete in basso a destra dell’area di lavoro una barra di colore verde avanzare da sinistra verso destra. Se tutto e andato bene al termine della verifica vi ritroverete in basso nella finestra della console delle scritte di colore bianco;
  • A questo punto premete il tasto “Carica”, il secondo sulla toolbar, per trasferire il programma sulla scheda;
  • Se tutto è andato bene vedrete il “LED” numero 13 di Arduino lampeggiare al ritmo di un secondo.

Lo sketh che dovreste visualizzare nell’area di lavoro dovrebbe essere simile a quanto vi riporto nella seguente immagine:

Arduino sketch blink

In quanto Arduino esce di fabbrica già programmato con lo “Sketch Blink”, non noterete molta differenza. Adesso però avete imparato a caricare gli sketch. Ritornate allo sketch Blink che abbiamo usato poco fa e dove trovate le voci “delay(1000);” modificate le stesse inserendo al loro posto “delay(100);”. A questo punto premete nuovamente “Verifica” e poi “Carica”.

Se avete fatto tutto correttamente vedrete lampeggiare il LED molto più velocemente.

Se qualcosa non dovesse funzionare verificate di aver selezionato la porta corretta. Controllate il cavo USB, se lo stesso sia inserito correttamente sia nella scheda Arduino che nel computer. Controllate da Strumenti > Schede di aver selezionato la scheda Arduino corretta. Deve corrisponde a quella da voi in uso.

Se ancora non dovesse andare e riscontraste ulteriori problemi, la prima cosa da fare e che vi consiglio e di provare a premere il “tasto reset” presente su Arduino, successivamente dall’ambiente di sviluppo premete “verifica” e poi “Carica”.  Se c’è qualcosa che ancora non va, chiudete l’ambiente di sviluppo di Arduino, spegnete e riaccendete il computer, aprite nuovamente l’ambiente di sviluppo di Arduino e ripetete i passaggi appena sopra descritti. Nel peggiore dei casi provate a disinstallare e reinstallare L’ambiente di sviluppo di Arduino.

Nota: Durante la fase di programmazione di Arduino solitamente non è necessario scollegare e ricollegare dallo stesso il cavetto USB. Potete tranquillamente lasciare il cavetto USB collegato, modificare quante volte volete lo sketch, successivamente una volta che le modifiche sono state completate, premere “Verifica” e poi “Carica”. Se dovesse capitare che un qualche errore a noi sconosciuto abbia mandato in blocco qualcosa fra Arduino e computer rendendo così vano ogni tentativo di programmalo attraverso l’ambiente d sviluppo, non rendendo così possibile caricare il vostro sketch, solo allora scollegate il cavo USB da Arduino, attendete 5 secondi, ricollegate il cavo USB. Dovreste aver risolto!!

A questo punto spiegherò brevemente lo sketch che abbiamo appena caricato su Arduino mettendo in evidenza le parti che verranno analizzate passo passo.

Come potete vedere si parte subito con del testo su più righe racchiuso fra i simboli “/*” e “*/”.

Testo Aarduino sketch blink 1

Subito dopo troviamo ancora un altro testo ma questa volta su di una sola riga in quanto sono stati usati i simboli “//”.

Testo Aarduino sketch blink 2

Come indicato in precedenza il testo serve a noi utenti per inserire delle note, appunti o commenti utili per segnalare o ricordarci di qualcosa. Ripeto nuovamente che Arduino non considera affatto quanto scriveremo come testo.

Successivamente troviamo la prima sezione di codice, “void setup” all’interno della quale vengono inserite le istruzioni di configurazione, inizializzazione, della scheda eseguite solamente alla sua accensione.

Arduino void setup sketch blink 1

Al rigo successivo, subito dopo il rigo contenente “void setup” ritroviamo ancora una volta un altro testo riportato su di una riga attraverso i simboli “/*”.

Arduino testo in void setup sketch blink

Scendendo ancora troviamo la sezione “void loop” all’interno della quale vengono inserite le istruzioni che saranno eseguite e ripetute all’infinito da Arduino finché lo stesso è alimentato.

Arduino void loop sketch blink

Come avete potuto notare sia la sezione “void setup” che la sezione “void loop” presentano delle coppie di parentesi graffe “{}”, all’interno delle stesse va inserito il codice del nostro programma.

Se osservate bene questa prima parte di codice noterete anche che nella sezione “void setup”, è presente un testo riportato su di una sola riga attraverso i simboli “//”. lo stesso si trova all’interno delle paretesi graffe “{}”.

Un altro testo riportato su di una riga sempre attraverso l’utilizzo dei simboli “//” si trova un rigo prima della sezione “void loop”.

Questo conferma quanto detto e ripetuto più volte in precedenza e cioè che Arduino non considera minimamente quanto viene indicato da noi come testo attraverso i simboli “//” oppure fra “*/” “*/”.

Occhio a quanto spiegherò di seguito perché sono i passaggi più importanti!!

Nella sezione “void setup” trovate una sola istruzione e cioè “pinMode” che serve a modificare il comportamento del pin numero 13 sul quale vi è collegato il LED incorporato di Arduino. Infatti nello sketch da noi caricato trovate scritto “pinMode(LED_BUILTIN, OUTPUT);” ma sarebbe stato lo stesso se avessimo scritto “pinMode(13, OUTPUT);”.

Provate a modificare lo sketch sostituendo “LED_BUILTIN” con il numero “13” Cliccate su “Verifica” e poi su “Carica” e vedrete che non cambierà assolutamente nulla. L’istruzione “LED_BUILTIN” non fa altro che richiamare il LED presente sulla scheda di Arduino.

Nota: Ogni pin di arduino può comportarsi come ingresso (input) o uscita (output). Questo lo decidete voi.

In breve nella sezione “pinMode” indichiamo ad Arduino come verranno utilizzati i pin che abbiamo intenzione di usare nel nostro progetto, come “INPUT” o come “OUTPUT”. Se utilizziamo un pin come Input significa che su quel pin ci aspettiamo arrivi un segnale dall’esterno, da qualche sensore, interruttore o pulsante. Se utilizziamo il pin come Output significa che a quel pin invieremo un segnale verso l’esterno per comandare qualcosa, un led, un relè, ecc…ecc… Le istruzioni presenti all’interno di “void setup” verranno eseguite solo all’accensione di Arduino.

Attenzione!!

Dovete scrivere i vari comandi rispettando le maiuscole e le minuscole senza dimenticare di mettere un punto e virgola dopo ogni comando.

Nella sezione “void loop” trovate quattro istruzioni e accanto ad ognuna delle stesse vi sono dei commenti riportati su di una sola riga inseriti tramite i simboli “//”. Anche se il testo dei commenti è scritto in inglese, una volta tradotti gli stessi non dovrebbe essere molto difficile capire cosa indichino.

La prima istruzione è “digitalWrite” che serve per impostare il valore “accesso (HIGH)” o “spento (LOW)” di un pin. L’istruzione “digitalWrite” richiede due parametri: nel primo il numero del pin sul quale dovrà agire, nel secondo che tipo di comportamento dovrà assumere il pin, cioè se sarà acceso o spento. Quindi:

digitalWrite(LED_BUILTIN, HIGH);

vi ricordo che LED_BUILTIN fa riferimento al pin numero “13” e cosi risulterebbe anche corretto scrivere in questo modo:

digitalWrite(13, HIGH);

Per molti sicuramente viene più facile da capire se scritto come in quest’ultimo caso appena sopra riportato.

I due parametri presenti nell’istruzione vanno divisi separati dalla virgola “,”.

In breve con l’istruzione digitalWrite(LED_BUILTIN, HIGH); Arduino manda un segnale al pin numero 13 e così il LED collegato allo stesso si accende e rimane in questo stato fino all’istruzione successiva.

Al rigo successivo incontriamo l’istruzione “delay”. La stessa non è che una pausa che interrompe temporaneamente l’esecuzione del programma per un periodo di tempo indicato in millisecondi. Un secondo e pari a 1000 millisecondi.

delay(1000);

In breve nello sketch da noi appena utilizzato, Arduino accende il LED sul pin numero 13, lo stesso resterà acceso per un secondo. Dopodiché Arduino passerà all’istruzione successiva.

digitalWrite(LED_BUILTIN, LOW);

Questa istruzione è simile alla prima ma in questo caso il valore “LOW” fa spegnere il LED

Continuando nell’analisi del nostro sketch incontriamo nuovamente una pausa

delay(1000);

Arrivati a questo punto il ciclo ripartirà nuovamente dalla prima istruzione.

Riporto di seguito la parte dello sketch con le sole istruzioni che verranno eseguite da Arduino:

void setup() {
 pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);
  digitalWrite(LED_BUILTIN, LOW);
  delay(1000);
}

Una volta che avrete caricato lo sketch su Arduino lo stesso accenderà e spegnerà regolarmente il LED con intervalli di tempo di un secondo.

Nota: Qualunque sia lo sketch che verrà caricato in arduino, lo stesso inizierà ad eseguire le istruzioni nell’ordine in cui le abbiamo scritte e una volta che avrà eseguito l’ultima ripartirà nuovamente dalla prima.

Gli sketch che caricherete su Arduino vengono salvati all’interno di una piccola memoria che lo stesso possiede.

Lo sketch che avete appena trasferito nella memoria resterà anche dopo che Arduino verrà spento e li lo ritroverete non appena lo riaccenderete. Quando caricate un nuovo sketch cancellerete automaticamente quello che era stato caricato in precedenza.

Nota: Esistono diverse parole per comandare, comunicare, con Arduino al fine che lo stesso si comporti e faccia quanto abbiamo in mente. E un po’ come avere un cane molto ubbidiente che non appena pronunciamo la parola seduto!! lo stesso si siede. Appena diremo Salta! Lo stesso farà un salto. E così via….

Se osservate bene lo sketch da noi scritto in precedenza noterete che alcune parole sono colorate rispetto a ad altre che sono semplicemente di colore nero. Bene, diciamo che quelle parole sono più importanti rispetto ad altre e Arduino di conseguenza di fronte alle stesse sa cosa deve fare, come comportarsi.

Se provate a cancellare una sola lettera di quelle parole “colorate” vi accorgerete che le stesse diventeranno immediatamente di colore nero. Questo può esservi molto di aiuto nella scrittura degli sketch di Arduino per capire immediatamente, ad occhio, se una parola sia stata scritta in modo corretto o meno.

Per concludere:
Per fare in modo che Arduino faccia ciò che noi vogliamo bisogna imparare a comunicare con lo stesso attraverso l’uso di determinate “istruzioni, comandi”. Rispettando delle regole di scrittura che prevedono l’utilizzo di parole ben precise, maiuscole, minuscole, segni di punteggiatura ecc… ecc… possiamo far capire ad Arduino cosa deve fare, come deve comportarsi. Le varie istruzioni o comandi vanno scritte nel linguaggio a lui conosciuto.

Spero di esservi stato di aiuto, di essere riuscito ad accompagnarvi nei vostri primi passi nel mondo della programmazione di Arduino.  

Non dimenticatevi di segnalare ulteriori risorse, siti web, progetti, idee, che riguardano Arduino. Vedrò di pubblicare le stesse sul sito così da consentire a tutti di reperire più facilmente le varie informazioni utili.

Nei prossimi articoli vedremo di continuare a realizzare ulteriori sketch cosi da approfondire diversi aspetti della programmazione che riguardano il nostro piccolo ma grande Arduino.

A presto!!

Info sull'autore

Fabio Gangemi administrator

Docente a contratto presso MIUR, Collaboro con diversi professionisti per divulgare articoli, informazioni utili, riguardanti la tecnologia e il suo buon uso.

You must be logged in to post a comment.