Programmare con Arduino – le basi

Inizio, con questo primo articolo, a scrivere sulla programmazione di Arduino, molto semplici e che possano aiutare chi ha grande conoscenza e dimestichezza con l’elettronica ma sente la necessità di approfondire la conoscenza della programmazione.

Come sappiamo Arduino è un prodotto incredibile, versatile e multiuso sopratutto perchè programmabile semplicemente.

Nello scorso articolo abbiamo preso confidenza con la barra degli strumenti dell’IDE di sviluppo:

Barra degli strumenti dell IDE Arduino

Barra degli strumenti dell IDE Arduino

Apriamo quindi il nostro IDE, io lo utilizzo su un MacBook:

IDE Arduino primo sketch

IDE Arduino primo sketch

in automatico, l’ide, ci suggerisce il nome del nostro primo programma, i programmi che scriveremo si chiamano sketch per cui li chiamerò indifferentemente programmi o sketch nei prossimi articoli; il nome che ci propone è semplice: sketch_jul04a ( programma, _, mese corrente jul, giorno corrente 04, lettera del programma a in quanto è il primo della giornata, i prossimi saranno b, c, d, … z ).

Per il resto il nostro foglio è vuoto, ma non farti prendere dal blocco del programmatore difronte a un listato tutto da iniziare, vediamo un po’ di sintassi utile:

Comando Significato
// Commento monoriga es.: // Il mio primo programma per Arduino
/* Apertura commento multiriga; 

es.:

/*

* Questo è il mio primo

* programma per Arduino

*/

*/ Chiusura commento Multiriga; es.: vedi sopra
void dichiarazione di funzione senza ritorno, ossia la funzione esegue delle operazioni ma non restituisce alcun valore dopo l’elaborazione
setup() funzione base (obligatoria) di ogni programma Arduino
loop() funzione base (obligatoria) di ogni programma Arduino
int dichiarazione di variabile di tipo integer (intero); utilizzato anche per dichiarare le funzioni che restituiscono valori interi
pinMode(pin,mode) funzione di configrazione di un piedino Arduino, in modo che sia utilizzabile come INPUT o come OUTPUT
digitalWrite(pin,level) invia un comando di output sul piedino selezionato (pin) di tipo digitale, pe cui 0 o 1; in sostituzione dello 0 e dell’1 si possono utilizzare le costanti LOW (0) e HIGH (1)
delay(second) funzione utile per introdurre un dalay (attesa) tra una istruzione e la successiva, il paramero second è esperesso in millesimi di secondo.

Ora che conosci i primi comandi possiamo passare a realizzare il primo programma, molto semplice, l’obiettivo è far lampegguare il led presente su Arduino con un intervallo di un secondo, questo ti permetterà di prendere confidenza con l’ide, provare subito un programma di esempio e collaudare la scheda Arduino che hai appena acquistato.

Passiamo al programma:

/*
Lampeggio
Accende e spegne il led collegato al piedino 13
di Arduino con un intervallo di un secondo,
ripetutamente.

Questo programma è di dominio pubblico.
*/

int ledPin = 13;                 // LED connesso al pin 13

void setup()
{
pinMode(ledPin, OUTPUT);      // imposta il pin come output
}

void loop()
{
digitalWrite(ledPin, HIGH);   // accende il led
delay(1000);                  // attende un seconso (1000 millisecondi)
digitalWrite(ledPin, LOW);    // spegne il led
delay(1000);                  // attende un secondo prima di ripartire
}

Descrizione del listato:

linee 1-8: contengono un commento iniziale, multiriga, che spiega ciò che il programma farà, è utile anche a chi lo ha scritto per ricordarsi cosa intendesse fare senza dover leggere tutto il codice. L’ultima linea (07) contiene una frase in  stile open-source che lascia chiunque libero di poter utilizzare il codice, modificarlo o diffonderlo. Ritengo che dato lo spirito di Arduino sia corretto riportarla sempre.

linea 10: definisco una nuova variabile di tipo intero (integer) ledPin il cui valore sarà il pin che desidero utilizzare per far lampeggare il led, siccome Arduino ha già collegato al pin 13 un led con la dovuta resistenza di protezione ho utilizzato quello come pin per il mio programma; una breve parentesi sulle variabili, a volte indispensabili, altre volte meno, in ogni caso alleggeriscono le modifiche dei programmi: se ad esempio in un secondo momento volessi collegare un led e relativa resistenza ad un altro pin di Arduino, ad esempio il pin 12, non dovrei far altro che variare il valore assegnato a ledPin da 13 a 12.

linee 12-15: definisce la funzione setup(), la prima delle funzioni obligatorie per arduino, quando Arduino inizia ad eseguire il programma caricato, cerca setup; in questa funzione puoi inserire le definizioni necessarie al programma, ad esempio definire che il pin 13 sarà utilizzato come pin di tipo OUTPUT, alla linea 14 con il comando pinMode indico ad Arduino di utilizzare ledPin ( in questo caso 13 ) come pin di OUTPUT. Nota che tutte le definizioni interne alla funzione setup() sono racchiuse tra parentesi graffe ( {} linea 13 e 15) questa sintassi è identica per tutte le funzioni che vedremo, da cui possiamo dire che una nuova funzione sarà definita con la sintassi:
definizione_di_funzione nome_funzione( eventuali parametri ) { … istruzoni e definizioni … }
void setup() { pinMode( ledPin,OUTPUT ); }

linea 17: definisco la seconda funzione obligatoria per Arduino loop, anche questa funzione non prevede la restituzione di alcun valore, per cui può essere dichiarata di tipo void e non attende parametri in input. Arduino eseguirà di continuo per tutta la durata del programma questa funzione.

linea 19: utilizzo il comando: digitalWrite impostandogli il pin 13 a livello logico alto. il comando digitalWrite accetta due parametri: il pin e il valore da inviare, in particolare siccome è un comando di tipo digitale potrai utilizzare come valore per il secondo parametro solo 0 o 1, anche nella notazione LOW o HIGH, se avessi avuto bisogno di inviare valori differenti al mio pin avrei dovuto utilizzare un altro comando come ad esempio: analogWrite.

linea 20: utilizzando il comando delay e passando come parametro 1000 in millisecondi ottengo una pausa di un secondo prima che Arduino esegua il comendo presente alla riga successiva.

linea 21: utilizzando nuovamente il comando digitalWrite imposto a 0 ( o LOW ) il valore del pin 13, ottenendo lo spegnimento del led.

linea 22: attendo un secondo prima di fargli rieseguire tutto il blocco contenuto nella funzione loop.

Non resta che cliccare sul bottone Test del programma per eseguire un test di sintassi del nostro programma, se il test risulta corretto e non ci sono errori di sintassi leggeremo in basso un messaggio di ok e l’indicazione del peso in byte del nostro programma.
Inviamo il nostro programma ad Arduino, utilizzando il pulsante di upload: upload to Arduino

Il risultato sarà quello mostrato nel video:

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/informatica/programmare-con-arduino-le-basi.html

74 pings

Skip to comment form

  1. […] linea 14: dichiaro la funzione loop(), che questa una vecchia conoscenza, vedi tutorial precedenti […]

  2. […] 10: definisce le operazioni di impostazione della scheda arduino (in un precedente articolo ho definito meglio a cosa serve la funzione setup() ), NOTA: in questo esempio non abbiamo definito […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.