Tutto quello che devi sapere sul codice ArduinoBlog Postcircuito teamMarch 11, 2018
Dal lancio della piattaforma open-source Arduino, il marchio si è affermato al centro di una comunità open-source espansiva. L’ecosistema Arduino è composto da una combinazione diversificata di hardware e software. La versatilità di Arduino e la sua semplice interfaccia lo rendono una scelta leader per una vasta gamma di utenti in tutto il mondo, da hobbisti, designer e artisti a prototipi di prodotti.
La scheda Arduino è collegata a un computer via USB, dove si connette con l’ambiente di sviluppo Arduino (IDE). L’utente scrive il codice Arduino nell’IDE, poi lo carica sul microcontrollore che esegue il codice, interagendo con ingressi e uscite come sensori, motori e luci.
Sia i principianti che gli esperti hanno accesso a una grande quantità di risorse e materiali gratuiti di supporto. Gli utenti possono cercare informazioni su come impostare la loro scheda o anche come codificare su Arduino. L’open source dietro Arduino lo ha reso particolarmente amichevole per i nuovi utenti e per quelli esperti. Ci sono migliaia di esempi di codice Arduino disponibili online. In questo post, vi guideremo attraverso alcuni principi di base della codifica per Arduino.
Pianifica il tuo prossimo progetto Arduino >>
Ambiente di codifica Arduino e strumenti di base
Che linguaggio è Arduino?
Il codice di Arduino è scritto in C++ con un’aggiunta di metodi e funzioni speciali, che menzioneremo più avanti. Il C++ è un linguaggio di programmazione leggibile dall’uomo. Quando crei uno ‘sketch’ (il nome dato ai file di codice Arduino), esso viene elaborato e compilato in linguaggio macchina.
Arduino IDE
L’Arduino Integrated Development Environment (IDE) è il principale programma di editing del testo usato per la programmazione Arduino. È dove scriverai il tuo codice prima di caricarlo sulla scheda che vuoi programmare. Il codice di Arduino viene chiamato sketch.
Nota: E’ importante usare l’ultima versione dell’IDE di Arduino. Di tanto in tanto, controlla gli aggiornamenti qui.
Esempio di codice Arduino
Come puoi vedere, l’IDE ha un design minimalista. Ci sono solo 5 titoli sulla barra dei menu, così come una serie di pulsanti sotto che ti permettono di verificare e caricare i tuoi sketch. Essenzialmente, l’IDE traduce e compila i vostri schizzi in codice che Arduino può capire. Una volta che il codice Arduino è compilato, viene caricato nella memoria della scheda.
Tutto quello che l’utente deve fare per iniziare a compilare il suo sketch è premere un pulsante (una guida a questo può essere trovata qui sotto).
Se ci sono errori nel codice Arduino, un messaggio di avviso verrà visualizzato e inviterà l’utente ad apportare modifiche. La maggior parte dei nuovi utenti spesso incontra difficoltà nella compilazione a causa dei severi requisiti di sintassi di Arduino. Se fai qualche errore di punteggiatura quando usi Arduino, il codice non verrà compilato e sarai accolto da un messaggio di errore.
Serial Monitor e Serial Plotter
Arduino serial monitor può essere aperto cliccando sull’icona della lente di ingrandimento in alto a destra dell’IDE o sotto strumenti. Il monitor seriale è usato principalmente per interagire con la scheda Arduino usando il computer, ed è un ottimo strumento per il monitoraggio e il debug in tempo reale. Per usare il monitor, dovrete usare la classe Serial.
Il codice che scaricate da circuito.io ha una sezione di test che vi aiuta a testare ogni componente usando il monitor seriale, come potete vedere nello screenshot qui sotto:
Arduino serial plotter è un altro componente dell’IDE Arduino, che vi permette di generare un grafico in tempo reale dei vostri dati seriali. Il plotter seriale rende molto più facile per voi analizzare i vostri dati attraverso un display visivo. Sei in grado di creare grafici, grafici di valori negativi, e condurre analisi della forma d’onda.
Debuging Arduino Code and Hardware
A differenza di altre piattaforme di programmazione software, Arduino non ha un debugger integrato. Gli utenti possono usare software di terze parti, oppure possono utilizzare il monitor seriale per stampare i processi attivi di Arduino per il monitoraggio e il debug.
Utilizzando la classe Serial, è possibile stampare sul monitor seriale i commenti di debug e i valori delle variabili. Sulla maggior parte dei modelli Arduino, questo avverrà utilizzando i pin seriali 0 e 1 che sono collegati alla porta USB.
Struttura del codice
Librerie
In Arduino, proprio come in altre piattaforme di programmazione leader, ci sono librerie integrate che forniscono funzionalità di base. Inoltre, è possibile importare altre librerie ed espandere le capacità e le caratteristiche della scheda Arduino. Queste librerie sono approssimativamente divise in librerie che interagiscono con un componente specifico o quelle che implementano nuove funzioni.
Per importare una nuova libreria, è necessario andare su Sketch > Import Library
Inoltre, in cima al vostro file .ino, è necessario utilizzare ‘#include’ per includere librerie esterne. Puoi anche creare librerie personalizzate da usare in sketch isolati.
Definizioni dei pin
Per usare i pin di Arduino, devi definire quale pin viene usato e la sua funzionalità. Un modo conveniente per definire i pin usati è usando:
‘#define pinName pinNumber’.
La funzionalità è o input o output e viene definita usando il metodo pinMode () nella sezione setup.
Dichiarazioni
Variabili
Quando stai usando Arduino, devi dichiarare variabili globali e istanze da usare in seguito. In poche parole, una variabile ti permette di nominare e memorizzare un valore da utilizzare in futuro. Per esempio, si potrebbero memorizzare i dati acquisiti da un sensore per utilizzarli in seguito. Per dichiarare una variabile è sufficiente definirne il tipo, il nome e il valore iniziale.
Vale la pena ricordare che dichiarare variabili globali non è una necessità assoluta. Tuttavia, è consigliabile dichiarare le vostre variabili per rendere facile l’utilizzo dei vostri valori in seguito.
Istanze
Nella programmazione del software, una classe è una collezione di funzioni e variabili che sono tenute insieme in un posto. Ogni classe ha una funzione speciale conosciuta come costruttore, che viene usata per creare un’istanza della classe. Per usare le funzioni della classe, dobbiamo dichiarare un’istanza per essa.
Setup()
Ogni sketch Arduino deve avere una funzione di setup. Questa funzione definisce lo stato iniziale di Arduino all’avvio e viene eseguita solo una volta.
Qui definiremo quanto segue:
- Funzionalità dei pin usando la funzione pinMode
- Stato iniziale dei pin
- Inizializzazione delle classi
- Inizializzazione delle variabili
- Logica del codice
Loop()
Anche la funzione loop è un must per ogni sketch Arduino e viene eseguita una volta che setup() è completo. È la funzione principale e, come suggerisce il suo nome, viene eseguita in un ciclo più e più volte. Il ciclo descrive la logica principale del vostro circuito.
Per esempio:
Nota: L’uso del termine ‘void’ significa che la funzione non restituisce alcun valore.
Come programmare Arduino
La logica di base del codice Arduino è una struttura “if-then” e può essere divisa in 4 blocchi:
Setup – di solito sarà scritto nella sezione setup del codice Arduino, ed esegue cose che devono essere fatte solo una volta, come la calibrazione del sensore.
Input – all’inizio del ciclo, legge gli input. Questi valori saranno usati come condizioni (“if”) come la lettura della luce ambientale da un LDR usando analogRead().
Manipolate Data – questa sezione è usata per trasformare i dati in una forma più conveniente o eseguire calcoli. Per esempio, AnalogRead() dà una lettura di 0-1023 che può essere mappata in un range di 0-255 da usare per il PWM.(vedi analogWrite())
Output – questa sezione definisce il risultato finale della logica (“then”) secondo i dati calcolati nel passo precedente. Guardando il nostro esempio del LDR e del PWM, accende un LED solo quando il livello di luce ambientale scende sotto una certa soglia.
Librerie di codice Arduino
Struttura della libreria
Una libreria è una cartella composta da file con file di codice C++ (.cpp) e file header C++ (.h).
Il file .h descrive la struttura della libreria e dichiara tutte le sue variabili e funzioni.
Il file .cpp contiene l’implementazione delle funzioni.
Importare le librerie
La prima cosa che devi fare è trovare la libreria che vuoi usare tra le tante disponibili online. Dopo averla scaricata sul tuo computer, devi solo aprire Arduino IDE e cliccare su Sketch > Includi libreria > Gestisci librerie. È quindi possibile selezionare la libreria che si desidera importare nell’IDE. Una volta che il processo è completo la libreria sarà disponibile nel menu dello sketch.
Nel codice fornito da circuito.io invece di aggiungere librerie esterne come detto prima, forniamo loro la cartella del firmware. In questo caso, l’IDE sa come trovarle quando usa #include.
Dal software all’hardware
C’è molto da dire sulle capacità software di Arduino, ma è importante ricordare che la piattaforma è composta da software e hardware. I due lavorano in tandem per far funzionare un sistema operativo complesso.
Codice → Compilazione → Caricamento → Esecuzione
Al centro di Arduino, c’è la capacità di compilare ed eseguire il codice.
Dopo aver scritto il codice nell’IDE è necessario caricarlo su Arduino. Cliccando sul pulsante Upload (l’icona della freccia rivolta a destra), il codice verrà compilato e caricato se ha superato la compilazione. Una volta che il caricamento è completo, il programma inizierà a funzionare automaticamente.
Puoi anche fare questo passo per passo:
- Prima di tutto, compila il codice. Per fare questo basta cliccare sull’icona di controllo (o cliccare su schizzo > Verifica / Compila nella barra dei menu.
Come potete vedere, l’icona di verifica si trova in alto a sinistra sotto il tag “File” nella sezione del menu.
Una volta fatto questo, Arduino inizierà a compilare. Una volta finito, riceverai un messaggio di completamento che assomiglia a questo:
Come puoi vedere, la linea verde in fondo alla pagina ti dice che hai “finito di compilare”. Se il tuo codice non riesce ad essere eseguito, sarai avvisato nella stessa sezione, e il codice problematico sarà evidenziato per la modifica.
Una volta che hai compilato il tuo sketch, è il momento di caricarlo.
- Scegli la porta seriale a cui il tuo Arduino è attualmente collegato. Per fare questo cliccate su Tools > Serial port nel menu per designare la porta seriale scelta (come mostrato sopra). Potete quindi caricare lo sketch compilato.
- Per caricare lo sketch, cliccate sull’icona di caricamento accanto alla spunta. In alternativa potete andare nel menu e cliccare su File> upload. I LED di Arduino lampeggeranno quando i dati saranno trasferiti.
Una volta completato, sarete accolti da un messaggio di completamento che vi dirà che Arduino ha finito di caricare.
Impostare il vostro IDE
Per collegare una scheda Arduino al computer è necessario un cavo USB. Quando usi Arduino UNO, l’USB trasferisce i dati del programma direttamente alla tua scheda. Il cavo USB è usato per alimentare il tuo Arduino. Puoi anche far funzionare il tuo Arduino attraverso una fonte di alimentazione esterna.
Prima di poter caricare il codice, ci sono alcune impostazioni che devi configurare.
Scegli la tua scheda – Hai bisogno di designare quale scheda Arduino stai per usare. Fallo cliccando su Strumenti > Scheda > La tua scheda.
Scegli il tuo processore- ci sono alcune schede (per esempio Arduino pro-mini) per le quali è necessario specificare quale modello di processore hai. Sotto strumenti > processore > selezionate il modello che avete.
Scegli la tua porta – per selezionare la porta a cui è collegata la tua scheda, vai su tools > Port > COMX Arduino (Questa è la porta seriale di Arduino).
Come installare schede non native (es. NodeMCU)
Alcuni modelli di schede non sono preinstallati nell’IDE di Arduino, quindi è necessario installarli prima di poter caricare il codice.
Per installare una scheda non nativa come NodeMCU, è necessario:
- Cliccare su tools > Boards > Boards Manager
- Cercare la scheda che si vuole aggiungere nella barra di ricerca e cliccare “install”.
Alcune schede non possono essere trovate attraverso il Board Manager. In questo caso, dovrai aggiungerle manualmente. Per fare questo:
- Clicca su Files > Preferenze
- Nel campo Additional Boards Manager, incolla l’URL del pacchetto di installazione della tua scheda. Per esempio, per nodeMCU, aggiungi il seguente URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Clicca OK
- Vai a strumenti > Schede > Gestione Schede
- Cerca la scheda che vuoi aggiungere nella barra di ricerca e clicca “installa”.
Una volta completato questo passaggio, vedrai le schede installate nella lista delle schede sotto la voce strumenti.
Nota: il processo può differire leggermente per schede diverse.
Arduino: Una piattaforma estremamente versatile
Arduino è molto più di un semplice microcontrollore. Con un IDE espansivo e una vasta gamma di configurazioni hardware, Arduino è veramente una piattaforma diversa. La varietà delle sue librerie e il suo design intuitivo lo rendono un favorito per i nuovi utenti e per i creatori esperti. Ci sono migliaia di risorse della comunità per aiutarvi a iniziare sia con l’hardware che con il software.
Quando si avanzano le proprie competenze, si possono affrontare problemi che richiedono il debug, che è un punto debole dell’IDE di Arduino. Fortunatamente, ci sono diversi strumenti e metodi per eseguire il debug dell’hardware e del software di Arduino. Nel prossimo articolo, vedremo come fare il debug di Arduino (e come testare il codice Arduino) e come usare simulatori ed emulatori.