In primo luogo, bisogna sottolineare che il linguaggio di programmazione utilizzato per Arduino è il C/C++; si può parlare di entrambi i linguaggi, in quanto è possibile utilizzare o meno il supporto per le classi che il C++ mette a disposizione.
Inoltre, il compilatore utilizzato è ovviamente dedicato per i microcontrollori della famiglia AVR della Atmel e fa parte di una ben definita toolchain GCC.
Con un compilatore ed un semplice editor di testo è sempre possibile scrivere e compilare un programma ma, per aumentare la produttività e ridurre i tempi di sviluppo, si preferisce sempre utilizzare un IDE dedicato (se disponibile); per fortuna con Arduino abbiamo questa possibilità!
Sul sito ufficiale di Arduino è disponibile la sezione Download ,
dalla quale possiamo scaricare l’IDE per il sistema operativo che utilizziamo (sono supportati Windows, Linux e Mac OS X). Oltre alla
versione “Arduino 1.8.8” che ci interessa (versione corrente al momento della pubblicazione del tutorial), sono
disponibili una versione Beta per la board “Arduino Yun”, una versione dedicata per la Intel “Galileo” ed addirittura i sorgenti dell’ambiente, data la natura open source del progetto.
Nel caso di Windows, che utilizzeremo nel corso di questa guida, abbiamo la
possibilità di scaricare un installer oppure un semplice file ZIP contenente tutto il necessario. Per evitare un inutile processo di
installazione, la seconda soluzione è assolutamente la migliore; in questo modo ci basterà semplicemente cancellare la cartella nel caso in cui dovessimo aggiornare l’IDE oppur non volerlo più utilizzare.
Una volta scaricato ed estratto il contenuto del file ZIP, clicchiamo sul file eseguibilearduino.exe che si trova nella cartella principale e dopo pochi secondi ci ritroveremo
davanti ai nostri occhi l’unica finestra semplice ma essenziale dell’IDE completamente sviluppato in Java.
La prima operazione da fare consiste nel selezionare quale board della famiglia
Arduino sarà utilizzata (nel nostro caso la “Arduino Uno”) attraverso il menu “Strumenti à Tipo di Arduino”.
Prima di connettere la nostra board al PC attraverso il cavo USB, diamo uno sguardo all’IDE per visionare le funzionalità che ci mette a disposizione.
Librerie ed esempi.
In primo luogo, nel menu File > Esempi, abbiamo un accesso diretto a tutti gli sketch di esempio che sono disponibili nella cartella examples dell’IDE e suddivisi per categoria in base alla funzionalità di Arduino che vogliamo esplorare.
Ci sono esempi sulla gestione dei pin della board, sull’uso del convertitore
analogico/digitale, su tutti i tipi di connessione dalla seriale alla Ethernet e così via. Inoltre, attraverso il menuSketch > Importa libreria ... possiamo aggiungere al nostro programma una o più delle tante librerie che il progetto Arduino ci mette a disposizione (per accedere alla EEPROM, al controller Ethernet, alla SD, etc.).
Nel caso in cui sia stata sviluppata da terze parti (oppure da noi stessi) una libreria per la gestione di un particolare componente o device, è possibile aggiungerla attraverso la voce Add Library ....
L’operazione di import di una libreria non fa nient’altro che aggiungere all’interno del nostro file sorgente tutte le direttive #include necessarie
per l’utilizzo delle classi e delle funzioni che la libreria stessa ci mette a disposizione. Sarà l’IDE a farsi carico al momento della
compilazione di includere nel firmware generato, non solo il nostro codice ma anche quello delle librerie utilizzate.
Compilazione.
Sempre nel menu Sketch è disponibile la voce Verifica/Compila che ci permette di verificare la correttezza del codice (ovviamente da un punto di vista sintattico e dei riferimenti alle funzioni utilizzate) e quindi compilarlo ma senza caricarlo immediatamente sulla board.
I tasti di scelta rapida.
Infine, nel menu Modifica troviamo una serie di funzioni strettamente legate
all’editor per poter eseguire semplicemente le operazioni di commento del codice, di ricerca, di copia/incolla e di indentazione.
Alcune delle operazioni più comuni sono accessibili attraverso una serie di pulsanti posti immediatamente al di sotto alla barra dei menu e che rispettivamente indicano :
- Verifica : esegue la verifica del codice scritto e relativa compilazione;
- Carica : esegue il caricamento sulla board del firmware compilato;
- Nuovo : permette di creare un nuovo sketch;
- Apri : permette di aprire uno sketch esistente;
- Salva : permette di salvare lo sketch correntemente aperto;
Collegare la scheda.
A questo punto possiamo passare al collegamento della nostra board al PC attraverso il cavo USB.
Una volta collegata ed alimentata la scheda (anche solo attraverso il cavo USB), il PC dovrebbe riconoscere la presenza della board (es. “Arduino Uno”) ma necessita dei driver per una corretta installazione.
All’interno della cartella drivers dell’archivio che abbiamo scaricato è possibile trovare i due file eseguibili (dpinst-x86.exe e dpinst-amd64.exe), che permettono l’installazione della scheda rispettivamente su un sistema operativo a 32 e 64 bit.
Una volta completata l’installazione, le porte seriali già disponibili sul PC con in più quella appena installata e relativa alla board Arduino, saranno visibili nel menu Strumenti > Porta seriale; dobbiamo ovviamente selezionare la porta giusta alla quale è collegata la scheda.
Per verificare quale sia la porta seriale giusta, possiamo individuare tutte le porte installate nel sistema all’interno del pannello di controllo, dove troviamo una porta del tipo Arduino Uno (COMx), che altro non è che una porta seriale virtuale associata al convertitore USB-seriale a bordo della scheda.
Porta seriale.
Una utilissima funzionalità dell’IDE è il monitor della porta seriale disponibile nella voce di menu Strumenti > Monitor seriale. Come vedremo, tale strumento si rivelerà molto importante per il debug dei nostri programma a runtime.
Per limiti dovuti in primo luogo al tipo di microcontrollore, non abbiamo a disposizione le funzioni di debugging che utilizziamo di solito per altri tipi di applicazione. Quindi niente breakpoints, esecuzione step by step e visualizzazione in tempo reale del valore delle variabili.
Utilizzando la libreria relativa alla gestione della seriale, avremo la possibilità di inviare dei messaggi su di essa e quindi visualizzarli attraverso il monitor; solo in questo modo potremmo “debuggare” e sapere a runtime in quale punto del programma ci troviamo oppure qual è il valore assunto da una o più variabili. Anche se può apparire un po’ rudimentale rappresenta l’unica soluzione in questo caso.