Hello World – Far lampeggiare un led con Arduino

Arduino UNO Rev.3

Sembrerà banale usare un Arduino per far lampeggiare un led, ma nel 99.9% dei casi, quando si inizia ad imparare un linguaggio di programmazione, il primo esercizio è far stampare la scritta ‘Hello world’ sulla console. Nel caso di schede elettroniche, la scritta “hello world” corrisponde a far lampeggiare un led.

Se sei un principiante sull’argomento e desideri iniziare ad imparare l’utilizzo e la programmazione delle schede Arduino, questo articolo ti aiuterà ad iniziare ed approfondire i concetti fondamentali dell’utilizzo della scheda e del suo ambiente di sviluppo.

In questo articolo verranno approfonditi i seguenti argomenti:

  • Scaricare e installare l’ambiente di sviluppo di Arduino (IDE)
  • Configurare l’ambiente di sviluppo per la tua scheda
  • Imparare a generare un nuovo progetto (Sketch) e salvarlo
  • Scrivere il primo codice sorgente
  • Caricare il software sulla scheda Arduino
  • Risoluzione dei problemi

Collegamento del Led alla scheda Arduino (opzionale)

Arduino Uno ha già un led saldato sulla scheda. Corrisponde al pin digitale D13, quindi lo scopo di questo esercizio è quello di farlo lampeggiare. Opzionalmente è possibile collegare anche un led esterno, con relativa resistenza per limitare la corrente che scorre all’interno del led stesso. Fate riferimento alla figura per il collegamento del led e ricordate che il reoforo più lungo del led è il positivo (+) da collegare a D13 e quello più corto il negativo (-) da collegare a GND.

Collegamento del led sul Pin D13

Scaricare l’ambiente di sviluppo di Arduino

L’ambiente di sviluppo, per tutte le schede della famiglia Arduino, si scarica dal sito www.arduino.cc, sezione download. Scegliete il file d’installazione compatibile con il vostro sistema operativo e installate il pacchetto.

Download dell’IDE di Arduino sul sito web www.arduino.cc

Una volta installato e aperto l’ambiente di sviluppo, compare una nuova finestra chiamata ‘sketch_xxx’, dove le ‘xxx’ corrisponde alla data corrente. All’interno della finestra già troverete due funzioni pre-impostate, setup() e loop(). Queste due funzioni dovranno sempre esistere in tutti i progetti Arduino ed il loro funzionamento è descritto di seguito.

Nuovo Sketch

Il codice e gli ‘sketch’

La scheda oltre ad essere equipaggiata con altro Hardware esterno (nel caso di questo esercizio non servirà) ha bisogno anche di un software che caratterizzerà il funzionamento del nostro progetto. Tutti i software scritti e progettati per la piattaforma Arduino, sono chiamati ‘Sketch‘. Ciascun Sketch dovrà risiedere, per impostazione predefinita, nella cartella ‘Documenti/Arduino’, i file avranno estensione “.ino” e sono tutti organizzati in cartelle avente lo stesso nome del file. Quindi dopo aver creato un nuovo progetto dal menu File → Nuovo, la prima cosa da fare è dare un nome al progetto e salvarlo. Questo progetto lo chiameremo ‘Blink_led.ino‘.

La funzione setup()

La funzione ‘setup()‘ è già pre-impostata in ciascun ‘sketch‘. Tutto il codice contenuto all’interno verrà eseguito una sola volta, all’avviamento e a ciascun RESET.

In questa funzione dovremmo inserire tutte le istruzioni che serviranno ad impostare l’hardware e/o inizializzare eventuali periferiche all’avviamento. Nel caso del nostro esercizio, l’unica impostazione da fare è indicare che il pin D13 dovrà essere utilizzato come uscita (output) perché ci sarà collegato un led. La funzione che utilizzeremo è:

pinMode( 13, OUTPUT );

che è la funzione, facente parte della libreria di sistema, incaricata alla definizione input/output dei ‘pin’ della scheda.

All’interno delle parentesi, il primo parametro da indicare è il numero del pin, nel nostro caso il 13 in quanto il led situato sulla scheda è collegato direttamente a questo pin. Il secondo parametro è la modalità con cui vogliamo impostare la direzione/utilizzo del pin. Le possibili scelte sono: OUTPUT / INPUT / INPUT_PULLUP

OUTPUT: si seleziona quando la scheda deve controllare un hardware esterno attraverso un segnale digitale. Nel nostro caso il segnale digitale avrà ampiezza 0-5 volt (nel caso di Arduino Uno), corrispondenti al livello logico 0-1 (o LOW / HIGH). La funzione corrispondente per controllare il controllo dei pin è: digitalWrite()

INPUT: si seleziona quando la scheda dovrà ricevere un segnale dall’esterno e analizzarlo. La ricezione del segnale digitale dovrà rispettare i livelli di ampiezza 0-5 volt, corrispondenti ai livelli logici 0-1 (LOW / HIGH). La funzione da utilizzare per la lettura di un livello logico di un determinato pin è: digitalRead()

INPUT_PULLUP: ha lo stesso funzionamento di INPUT, con la differenza che all’interno del microcontrollore viene attivata un resistenza denominata di ‘pull-up’, collegata tra i 5v ed il pin, avente lo scopo di innalzare la tensione sul pin a 5v in assenza di collegamenti esterni. Questa particolare funzione è molto utile ad esempio in caso di collegamento di un tasto.

Ulteriori informazioni sui pin digitali le trovate qui: https://www.arduino.cc/en/Tutorial/Foundations/DigitalPins

La funzione loop()

Anche la funzione loop() sarà presente in tutti gli Sketch di Arduino, perché il programma non finirà mai di essere eseguito. Il sistema è stato progettato per eseguire sempre un codice all’infinito, qualunque esso sia. A differenza della funzione setup(), che come abbiamo già detto viene eseguita una sola volta, la funzione loop() sarà ripetuta all’infinito.

All’interno della funzione loop() inseriremo il codice che cambierà lo stato logico del pin D13, invertendolo ad ogni passaggio, così creeremo un sorta di ‘onda-quadra’ 0-5 volt sul pin in modo da accendere e spegnere il led collegato.

Il codice per il lampeggio del Led

Finalmente siamo arrivati al nostro codice che farà lampeggiare il led.

Il codice che segue sono le istruzioni che serviranno a far lampeggiare il led collegato sul pin D13.

Vediamo nel dettaglio a cosa serve ciascuna istruzione. Copiate e incollate l’intero codice nella finestra dell’IDE di Arduino.

void setup() {
  pinMode( 13, OUTPUT );
}

void loop() {
  digitalWrite( 13, LOW );
  delay(500);
  digitalWrite( 13, HIGH );
  delay(500);
}

Come abbiamo già visto nei paragrafi precedenti, all’interno della funzione setup() troveremo una sola riga, il richiamo alla funzione pinMode per l’impostazione del pin 13 come OUTPUT. Questa funzione non ha senso ripeterla ogni volta, quindi è corretto che si trovi all’interno di setup(). Le altre istruzioni invece dovranno essere eseguite sempre, all’infinito e quindi si troveranno all’interno di loop().

All’interno di loop() troveremo la prima riga digitalWrite() riempita con i parametri necessari per impostare lo stato logico del pin, ovvero ’13’ che è il numero del pin del Led e il relativo stato (LOW) corrispondente al livello logico ‘0’.

Nella seconda riga troveremo la funzione delay(), che avrà il compito di arrestare l’esecuzione del programma per un tempo definito in millisecondi dall’utente. Nel nostro esempio troveremo “500”, ovvero ‘mezzo secondo’, necessario a mantenere lo stato logico impostato in digitalWrite() nello stato ‘LOW’ per il tempo definito in delay().

Le due righe successive non sono altro che una ripetizione delle due precedenti, con la differenza che la funzione digitalWrite() imposterà lo stato logico del pin D13 nella condizione logica HIGH o 1 (5 volt), invertendo di fatto lo stato logico precedente (LOW). La successiva istruzione delay() servirà, come nella precedente, a mantenere lo stato logico (HIGH) in tale situazione per il tempo definito, per poi cambiare nuovamente in LOW in quanto il codice si ripeterà dall’inizio come già detto in precedenza.

Tutto chiaro ? Allora procediamo nel prossimo paragrafo alla verifica e caricamento del nostro Sketch.

Impostazione dell’ambiente di sviluppo (IDE)

L’ambiente di sviluppo (IDE) di Arduino è stato nel tempo ampliato e migliorato per supportare tutte le schede della famiglia Arduino. Da una certa versione in poi gli sviluppatori hanno dato anche a possibilità di essere utilizzato con hardware di terze parti, ma in questo articolo non entreremo nel merito di questa funzionalità.

Passaggio 1 – Prima di caricare uno sketch nella memoria FLASH della scheda è dire al compilatore con quale scheda stiamo lavorando. Per fare correttamente questa impostazione, basterà selezionare il modello della scheda nel menù Strumenti → Scheda e poi nel nostro caso proseguire la selezione con: Arduino AVR boards → Arduino Uno

Passaggio 2 – Impostare la porta di comunicazione. Collegate la scheda Arduino Uno alla porta USB del computer per poter visionare la presenza di una porta seriale disponibile. Il driver per supportare la scheda è stato già installato automaticamente durante l’installazione dell’ambiente di sviluppo. Il numero/nome della porta seriale può variare a seconda del vostro sistema operativo come negli esempi di seguito:

Per Mac OSX: /dev/cu.usbmodemXXXXX dove ‘XXXXX’ è un numero (es: /dev/cu.usbmodem-14101)

Per Windows: COMx dove ‘x’ è un numero (es. COM3)

Per Linux: /dev/ttyACMx dove ‘x’ è un numero (es /dev/ttyACM0)

Passaggio 3 – Selezionate la porta seriale nel menu Strumenti → Porta

Compilazione e verifica

L’ambiente di sviluppo prevede la possibilità di poter verificare se il nostro Sketch è corretto, ovviamente sotto il punto di vista della sintassi. Per eseguire la verifica, basterà premere il pulsante ‘Verifica’ in alto a sinistra, oppure da menu Sketch → Verifica / Compila. Eventuali errori saranno visualizzati nella finestra in basso.

Pulsante Verifica

Caricamento (upload) dello Sketch nella scheda Arduino

Per eseguire il caricamento (upload) del nostro Sketch sarà sufficiente premere il tasto ‘Carica’, oppure da menu Sketch → Carica

Pulsante Carica

Se tutto è stato impostato correttamente, dovreste vedere dei veloci lampeggi dei led TX e RX sulla scheda e poi finalmente il nostro led (L) lampeggiare con una frequenza di ½ secondo. Se avete collegato il led esterno, anch’esso lampeggerà con la stessa frequenza di quello saldato sulla board.

In caso di problemi…

Se la verifica o il caricamento non va a buon fine ed errori vengono visualizzati nella finestra in basso, nella maggior parte dei casi potrebbe dipendere da una o più di queste cause:

1. C’è un errore di sintassi nel codice. Infatti il linguaggio è molto rigido sotto il punto di vista della sintassi. Ad esempio potreste aver dimenticato il punto-e-virgola (;) alla fine di una riga (obbligatorio), oppure un carattere MAIUSCOLO al posto di uno MINUSCOLO, il linguaggio è infatti ‘case-sentitive’, ovvero non permette che un’istruzione possa avere lo stesso significato se scritto in MAIUSCOLO (e viceversa). Verificate il codice e riprovate.

2. Un problema di caricamento. Verifica di aver selezionato la giusta porta seriale associata alla scheda. Questo errore si manifesta di solito con il messaggio “avrdude: ser_open() can’t open device” o “stk500_recv(): programmer is not responding”. Se avete più di una porta seriale nel menu Strumenti → Porta e non sapete qual’è quella associata al vostro Arduino, provate a scollegare il cavo e notate le differenze invece con il cavo collegato. La porta che compare in più è quella della vostra scheda.

3. Un problema di configurazione. Assicuratevi di aver selezionato il corretto modello di scheda nel menu Strumenti → Scheda

Conclusioni

Se sei riuscito a completare tutti i passaggi e a far lampeggiare il led, significa che hai correttamente impostato l’ambiente di sviluppo e sei pronto per i prossimi esercizi.

In questo articolo hai imparato:

  • La conoscenza e l’utilizzo base dell’ambiente di sviluppo Arduino
  • Configurare l’IDE e utilizzarlo per caricare gli “Sketch”
  • La creazione di un nuovo progetto e la scrittura del codice
  • Gli elementi base per la gestione di pin digitali

Non perderti nessuna novità!

Non inviamo spam! Leggi la nostra Informativa sulla privacy per avere maggiori informazioni.

Articoli simili