Premessa:
Questo tutorial è dedicato a chi di elettronica non ne capisce un tubo.
Benvenuti !
In questo tutorial cercheremo di apprendere il funzionamento di Arduino per iniziare ad usarlo in maniera semplice.
La conoscenza dell’elettronica non è necessaria, ma è fortemente consigliato apprenderne i fondamenti per poter utilizzare al meglio la piattaforma Arduino.
In questo tutorial non si parla nello specifico dei tecnicismi dei singoli microcontrollori intesi come circuiti integrati, ma delle schede a microcontrollore di tipo Arduino/Genuino e del suo ambiente di sviluppo IDE che è bassato sul linguaggio C++.
In particolare, con questo tutorial, si vuole fornire a coloro che non conoscono l’elettronica, ma che vogliono conoscerne i principi fndamentali di funzionamento, alcune informazioni di base per l’uso della piattaforma Arduino.
Sovente mi è capitato di senitre di persone che hanno acquistato un kit Arduino primi passi o semplicemente una scheda Arduino, ma poi, scoraggiati, vedere che non hanno mai messo in pratica nessun esperimento o prova in tal merito.
Ecco, questo tutorial è rivolto proprio a voi; ora non avete più scuse!
Scherzi a parte, partiamo subito a descrivere brevemente cosa è Arduino.
Arduino è una piattaforma basata su microcontrollore e per il suo funzionamento è necessario un PC con il suo software IDE o ambiente di sviluppo.
Per “piattaforma”, si intende una scheda elettronica contenente tutti i componenti in grado di funzionare come un sistema operativo semplice.
Esistono diversi modelli di Arduino per venire inconrto alle esigenze delle applicazioni più disparate.
La più nota è Arduino UNO (chiamata ultimamente Genuino).
Tra le altre versioni disponibili vi sono: Arduino NANO; Arduino MICRO; Arduino MEGA e Arduino LILYPAD.
Le differenze tra una versione e l’altra sono le dimensioni della scheda, la capacità di gestione delle porte di I/O e l’ambiente di utilizzo.
In questo tutorial, parleremo prevalentemente di Arduino UNO o di Arduino NANO.
IDE:
L’IDE è l’ambiente di sviluppo (in inglese Itregrated Development Enviroment), oppure ambiente integrato di progettazione, cioè il software di gestione/programmazione delle schede Arduino.
Tale software non è compreso nei kit in vendita di Arduino.
Maggiori informazioni sull'ambiente di sviluppo possono essere scaricate qui dal sito ufficiale:
https://www.arduino.cc/
Da qui cliccare su “software/downloads”
https://www.arduino.cc/en/Main/Software
e scaricare la versione dell’IDE relativa al vostro sistema operativo.
Ora che abbiamo l’IDE possiamo collegare la nostra scheda Arduino ad una porta libera USB e lanciare il software IDE.
Al suo primo avvio, l’IDE apparirà così: In basso a destra è visualizzata la porta COM utilizzata nel collegamento USB Arduino PC.
In alto è visualizzato il nome dello sketch assegnato di default al programma; nel mio caso è sketch_nov11.
Nella parte bianca è visibile il codice sorgente.
Questa zona è un editor di testo dove viene scritto il software vero e proprio (programma).
Uno sketch, in gergo è un programma che verrà caricato nella scheda per poter essere eseguito sempre, cioè anche quando Arduino non è collegato al PC ma è alimentato da corrente elettrica.
La parte nera sottostante è un’area di informazione dell’ambiente di sviluppo verso il programmatore. Cioè è una zona dove vegono visualizzati eventuali messaggi di errore o informazione dell’IDE.
Se trovate qualche incongruenza, riavviate il sistema o postate i vostri quesiti qui per cercare di risolverli. Vi risponderemo nel limite del possibile.
Come verificare che Arduino sia collegato correttamente ad una porta USB del PC.
In Windows 10 aprire le impostazioni (ingranaggio) e nel campo di ricerca srivere “hardware”.
Successivamente, nei risultati della ricerca scegliere “Gestione dispositivi”.
Nel mio caso, Arduino è collegato alla porta COM3 ed usa un driver CH340. Va bene!
Ora apriamo l’IDE e carichiamo il programma dimostrativo “Blink”; lo trovate in “File/Esempi/01.Basics”.
Nota, in questo menù trovere molti esempi pronti all’uso per usare e testare diversi dispositivi.
Quello che faremo adesso è gestire semplicemente l’accensione e lo spegnimento di un led.
Per ora non collegheremo nessun led ad Arduino, in quanto per questo esperimento sfrutteremo un led presente a bordo della scheda. Tale led è collegato alla porta digitale di I/O numero 13.
Una porta di I/O è un pin in grado di gestire un segnale elettrico in entrata (IN) o in uscita (OUT).
In caso di uscita (OUT), se la porta è di tipo digitale avremo due soli possibili stati logici; HIGHT e LOW, oppure 1 e 0, oppure alto e basso.
In Arduino, ma anche in molti altri dispositivi, lo stato logico HIGHT corrisponde a una tensione elettrica di 5 Volt in CC. Mentre uno stato logico LOW corrisponde ad un livello di tensione pari a 0 Volt.
In caso di porta di entrata (IN), abbiamo la possibilità di leggere lo stato logico della porta quando sulla stessa vengno o meno applicati 5 Volt per avere un valore HIGHT o 0 volt per un valore LOW. In pratica, una porta IN di entrata digitale legge la condizione vero o falso di un interruttore.
Ora vedremo solo il funzionamento della porta 13 in modalità OUT.
Il comando o istruzione del programma per definire la modalità di funzionamento della porta è:
“pinMode”(numeroporta,tipo)
che nel nostro caso sarà:
pinMode(LED_BUILTIN, OUTPUT);
pinMode è il comando,
LED_BUILTIN è la porta 13 che è collegata al led a bordo di Arduino,
OUTPUT è la modalità di funzionamento della porta.
Questo comando è inserito in una procedura chiamata “setup”, la quale viene eseguita una sola volta all’avvio del programma od ogni qualvolta viene resettata la scheda Arduino.
Nel listato abbiamo anche dei commenti indicati da una doppia slash, cioè “//” per i commenti brevi.
Oppure “/*” commento “*/” per i commenti lunghi.
Questo è un commento lungo:
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
Questo è un commento breve:
// the setup function runs once when you press reset or power the board
Questa è la procedura di setup:
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
I commenti servono al programmatore per tenere memoria del proprio lavoro e per avere dei riferimenti durante la scrittura di un programma.
Saper gestire bene i commenti sarà sicuramente utile nel lavoro di programmazione ed aiuterà altri programmatori a capire bene il nostro programma.
Le procedure:
Una procedura viene sempre avviata con il comando “void”, la cui sintassi è:
void nomeprocedura() {
linee di codice….
linee di codice….
linee di codice….
}
Ogni procedura è raggruppata tra due parentesi graffe al cui interno vi sono i comandi relativi alla procedura stessa.
“nomeprocedura” è il nome assegnato alla procedura. Esso può essere di default (setup e loop) oppure arbitrario quando intendiamo scrivere una routine che funzioni in modo indipendete se evocata.
Per ora vediamo le due procedure più importanti che sono “setup” e “loop”.
“setup” l’abbiamo vista poco sopra e ci consente di definire eventi di impostazione, come l’uso elle porte o altro.
“loop” invece è una procedura che verrà ripetuta all’infinito fino a quando non spegneremo Arduino.
Il pulsantino di reset presente sulla scheda interromperà il funzionamento della scheda, così come un eventuale comando di uscita presente nella procedura di “loop”.
Comprendere bene queste caratteristiche è importante per poter gestire al meglio la nostra scheda Arduino.
Andiamo avanti quindi con il programma “Blink”.
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
Queste linee di codice introducono due nuovi comandi:
“digitalWrite” e “delay”
“digitalWrite” invia un comando di srittura sulla porta di I/O LED_BUILTIN di tipo HIGHT, cioè accende il led presente sulla scheda.
“delay(1000);) attende mille millisecondi, cioè un secondo.
Arduino è molto preciso con i tempi!!!
Il secondo comando “digitalWrite” invia un comando di srittura sulla porta di I/O LED_BUILTIN di tipo LOW per spegnere il led.
“delay(1000);) attende mille millisecondi, cioè un secondo come sopra.
A questo punto il loop (void) si ripeterà all’infinito.
Il risultato sarà che il led presente sulla scheda Arduino lampeggierà con una frequenza di un secondo.
OK, fino ad ora abbiamo visto come funziona un programma molto semplice, ma non abbiamo ancora programmato Arduino veramente.
Per farlo non dobbiamo fare altro che premere il pulsantino con la freccia destra in alto nell’IDE:
Prima però modifichiamo il tempo di lampeggio all’interno del comando “delay” e sostituiamo 1000 con 100:
delay(100);
In questo modo, la frequenza di lampeggio sarà di un decimo di secondo.
Come noterete, ora il led presente sulla scheda Arduio lampeggerà molto più velocemente.
Dopo aver premuto il tasto evidenziato nella figura sopra, l’ambiene di sviluppo ha compilato il programma per inviarlo alla scheda Arduino collegata al PC. Se tutto è andato bene, deve aver inoltrato un messaggio nell’area nera nella parte sottostante della finestra tipo:
Lo sketch usa 928 byte (2%) dello spazio disponibile per i programmi. Il massimo è 32256 byte.
Le variabili globali usano 9 byte (0%) di memoria dinamica, lasciando altri 2039 byte liberi per le variabili locali. Il massimo è 2048 byte.
Tale area è chiamata anche “area di debug” e serve per capire se la compilazione del codice è andata a buon fine.
Prima di terminare questo tutorial introduttivo sull’uso di Arduino, vorrei parlare delle variabili. Le variabili, in programmazione sono molto importanti, perchè ci permettono di gestire I dati del programma in modo pratico.
Esistono diversi tipi di variabili; esse possono essere definite prima della procedura di “setup” scrivendo semplicemente il tipo e la sua etichetta. L’etichetta è definita dall’utente.
Per esempio, nel programma “Blink”, potremmo sostituire il numero fisso tra parentesi tonde dopo ilcomando “delay” con una variabile numerica intera che chiameremo “millisecondi” in questo modo:
Prima di “setup” inseriamo:
int millisecondi=1000; //periodo di lampeggio
In questo modo abbiamo creato una variabile numerica inera con assegnato il valore 1000.
Ora useremo questa variabile all’interno del comando “delay” nel seguente modo:
delay(millisecondi);
Qui sotto il listato aggiornato con l’inserimento della variabile intera numerica “millisecondi”.
Ora lascio a voi il compito di sperimentare l’inserimento di diversi dati e/o variabili.
Ovviamente, questo primo tutorial non ci permetterà di sfruttare al meglio tutte le potenzialità di Arduino, però spero tanto che abbia stimolato opportunamente le vostre sinapsi per poter proseguire con questo lavoro.
Fatemi sapere se questo tutorial vi piace o meno.
Io confido anche nella collaborazione di iscritti a questo forum che conoscono Arduino, I quali potranno solo essere di un aiuto prezioso e che sicuramente correggeranno I miei immancabili errori

Grazie a tutti per la pazienza.