Ambiente di sviluppo integrato (IDE)

Per Arduino è disponibile un ambiente di sviluppo integrato IDE (Integrated Development Environment), un'applicazione multipiattaforma (in Java) derivata da Processing, un software e un linguaggio per imparare a programmare nel contesto delle arti visive e dal progetto Wiring, una piattaforma hardware e software pensata per facilitare il compito dei progettisti. In pratica Wiring può essere considerato uno sviluppo parallelo ad Arduino, entrambi comunque sono derivati da Processing.
Il linguaggio di programmazione Arduino viene generalmente chiamato Wiring ed è derivato dal C/C++ con implementazioni che favoriscono l’interazione con l’ambiente esterno.

L'IDE mette a disposizione tutti gli strumenti per:

  • scrivere e modificare un programma (editor)
  • convertire il programma dal linguaggio sorgente al codice macchina (compilatore)
  • caricare il codice nella memoria del microcontrollore (loader)
  • controllare l’esecuzione del software e correggerne eventuali errori (debugger).

Sono inoltre disponibili un Monitor seriale per comunicazioni sulla porta seriale, un Plotter seriale per rappresentare in modalità grafica dati numerici oltre ad altri utili strumenti.

I programmi prendono il nome di sketch (schizzo) e vengono archiviati in file con estensione .ino: ogni file deve essere contenuto in una cartella con lo stesso nome, dentro la cartella possono essere aggiunti file immagine, testo o altro, ma solo un file .ino.

Le cartelle degli sketch possono essere archiviate ovunque ma normalmente sono contenute in una cartella chiamata sketchbook (album da disegno), la denominazione può sembrare strana ma non dobbiamo dimenticare che Processing è stato realizzato per le arti visive.

La struttura base del linguaggio di programmazione di Arduino si sviluppa sulla definizione di due funzioni: setup() e loop() (in Processing le funzioni sono setup() e draw()).

void setup()
È la prima funzione ad essere eseguita dopo ogni avvio o reset, utilizzata per inizializzare variabili, per impostare lo stato dei pin, per richiamare le librerie, per l'impostazione delle comunicazioni seriali.

void loop()
Viene eseguita dopo la funzione setup() ed esegue ciclicamente le istruzioni definite al suo interno (ciclo infinito).
È l'equivalente di while (true) { … } oppure for ( ; ; ) { … }.
La funzione può essere lasciata vuota ma deve comunque essere dichiarata.

Oltre all'IDE messo a disposizione dal sito di Arduino è possibile programmare le schede con altri ambienti di programmazione tramite opportuni plugin: Geany, Platformio, Eclipse, Visual Studio, Atmel Studio, ArduinoDroid (per Android), ecc.
Sono disponibili anche alcuni ambienti di programmazione con grafica a blocchi, generalmente derivati da Google's Blockly:

  • Codecraft [download] [guida]: si propone come alternativa a Scratch, quindi può essere usato anche senza alcun riferimento a dispositivi esterni; è disponibile sia in versione online che offline con un'ampia raccolta di esempi. La parte hardware è dedicata principalmente ai prodotti Seeed studio, ma può comunque essere utilizzato con un'ampia varietà di dispositivi. La programmazione a blocchi grafici è affiancata da una programmazione a linee di testo in Python o Arduino, che è possibile visualizzare cliccando sull'apposita icona: il testo non è editabile, ma può essere effettuato un rapido copia/incolla. Non è open source.
  • Otto Blockly [video], [download], [github]: è stato sviluppato soprattutto per supportare i prodotti del progetto Otto DIY [kit], ma può essere utilizzato con un'ampia varietà di dispositivi Arduino; è disponibile sia in versione online che offline: l'installazione è semplice però deve essere effettuata in una cartella con i permessi di scrittura, quindi fuori da quella di installazione programmi. Il progetto è completamente open, sia la parte hardware sia quella software. La programmazione grafica è affiancata da una programmazione a linee di testo in Python o Arduino, che è possibile visualizzare cliccando sull'apposita icona.
  • Open Roberta Lab: è un ambiente di programmazione open source, sviluppato per introdurre i bambini alla programmazione di robot e microcontrollori. Gli utenti programmano i robot utilizzando un linguaggio di programmazione grafico basato su Blockly chiamato NEPO®. È disponibile una simulazione per coloro che non hanno un vero robot a portata di mano. Il software è un'applicazione web in esecuzione nel browser, è disponibile una versione offline ma l'installazione è piuttosto complessa e macchinosa!
  • mBlock [download]  [mLink2]: derivato da Scratch è dedicato ai prodotti di MakeBlock

Altri ambienti grafici derivati da Blockly: Blockly@rduino: sviluppato in Francia in ambito universitario, BlocklyDuino, Ardublockly, ecc.

Installazione

Il sito ufficiale di Arduino è particolarmente ricco di informazioni e risorse per il lavoro di programmazione, qui alcuni link [Guida] [Software] [Project Hub].

Per quanto riguarda l'ambiente di programmazione è possibile utilizzare un editor online (Arduino Web Editor) o scaricare il software per l'installazione sul computer. La versione online richiede la registrazione e comunque l'installazione di un driver sul PC.

Per la versione offline di Windows abbiamo tre possibilità:

  • Windows Installer, per Windows 7 e versioni successive
  • Windows ZIP file, versione portatile che non richiede installazione
  • Windows App perWindows 8.1 o 10

Delle tre alternative è preferibile la prima. L'installazione del software non presenta particolari problemi.

L'IDE

Nell'immagine seguente uno screenshot dell'ambiente di sviluppo alla sua apertura.

IDE

Nella prima riga viene mostrato il nome dello sketch seguito dalla versione dell'IDE.
Nella seconda riga è presente la barra del menù, sotto la barra degli strumenti.
Al centro l'area di testo per la scrittura del codice e nella parte sottostante l'area dei messaggi che fornisce informazioni durante la compilazione e visualizza eventuali errori.
Nella riga in fondo invece sono indicate il tipo di scheda e la porta seriale in uso.

Un elenco completo delle voci di menù a questo link.

Ad ogni pulsante della barra degli strumenti è associato il comando indicato nella seguente tabella:

IDE VERIFY File Verifica / Compila
IDE UPLOAD File Compila e Carica
IDE NEW File Apri un nuovo sketch
IDE OPEN File Carica uno sketch
Salva lo sketch
Apri la Console seriale

 

Nella tabella successiva le immagini delle sotto-voci dei menù a tendina.

File

Modifica
 Sketch  Strumenti

 

Finestra delle Impostazioni

Impostazioni

Nella finestra di dialogo delle impostazioni è possibile modificare diversi parametri come le dimensioni dei caratteri, visualizzare/nascondere i numeri di riga, aggiungere gli indirizzi per la definizione di schede non comprese nell'elenco standard.

Nella prima riga è indicato il percorso della cartella degli sketch: durante l'installazione la cartella viene creata all'interno di Documenti, ma si può modificare il percorso secondo le proprie preferenze; questa cartella contiene anche la sottocartella delle librerie libraries.

Nell'ultima riga, in fondo alla finestra, è indicato anche il percorso del file di configurazione preferences.txt.

Apertura di uno sketch

Quando si apre un nuovo sketch è importante indicare il tipo di scheda e la porta seriale.

Dalla barra del menù, selezionare Strumenti > Scheda ed effettuare la selezione dall'elenco a tendina; le schede Arduino standard si trovano sotto la voce Arduino AVR boards, se non si trova quella in uso, selezionare Gestore schede..., dalla nuova finestra di dialogo, selezionare il gruppo a cui questa appartiene e procedere all'installazione. In caso contrario è necessario cercare sulla rete un archivio delle definizioni e indicare l'url nell'apposita riga delle Impostazioni.
Ad esempio per utilizzare la scheda ESP8266 è necessario prima indicare nella casella di testo delle Impostazioni, URL aggiuntive per il gestore di schede, l'indirizzo http://arduino.esp8266.com/stable/package_esp8266com_index.json. e successivamente ripetere la procedura di assegnazione della scheda (vedi).

Generalmente, quando si collega la scheda al computer, viene assegnata la porta corretta ma in presenza di più porte seriali può essere necessario fare la scelta manualmente; in Windows:

  • con il pulsante di destra del mouse, cliccare sull'icona di Start e selezionare Gestione dispositivi, poi alla voce "Porte (COM e LPT)" cliccare sul simbolo > per espandere il menù e mostrare tutte le porte seriali con indicazione del tipo;
  • in qualche caso può essere sufficiente staccare il connettore USB per vedere quale porta viene rimossa, poi riconnetterlo.