Accendere un led con Arduino è il primo esperimento da provare per prendere confidenza con la scheda. E’ un passaggio fondamentale per chi non ha una discreta conoscenza dell’elettronica prima di passare a progetti più impegnativi come il nostro etilometro portatile. Ovviamente avere competenze base di elettronica e programmazione aiuta ma con un po’ di pazienza e qualche suggerimento dei più esperti dal web anche i principianti possono riuscirci senza grossi problemi. Oggi vedremo come inviare ad Arduino UNO (ma l’iter è simile anche per le altre versioni) il comando di far lampeggiare un led.
Far lampeggiare un led con Arduino: cosa occorre
Come si legge sul sito di Arduino le componenti hardware per questo facile esperimento sono: una scheda Arduino e un led. Alcune versioni di Arduino hanno già incorporato il led nel foro 13.
Far lampeggiare un led con Arduino: tutorial
Per prima cosa bisogna lanciare il programma di Arduino: la prima volta si aprirà automaticamente uno sketch vuoto, in seguito basta andare su File e Nuovo per aprire un nuovo sketch e salvarlo con il nome desiderato in base alla funzione. Se si fanno aggiornamenti successivi di uno stesso sketch si può specificare nome e data al momento del salvataggio. Se non si seleziona una cartella di destinazione in ambiente Mac gli sketch vengono scaricati in automatico sotto Documenti nella cartella denominata Arduino. Prendete un led: inserite il catodo del diodo (lo riconoscete perché è più corto) nel foro indicato dalla sigla GND e l’anodo (il terminale più lungo) nel foro contrassegnato dal numero 13. Il programma per far lampeggiare un led è disponibile sul sito di Arduino (http://arduino.cc/en/Tutorial/Blink). Vi basta copiare i codici nello sketch che invia gli ordini ad Arduino. Cliccate su “verifica”: se non vengono visualizzati errori in rosso ma compare la scritta “compilazione terminata” significa che l’operazione è andata a buon fine.
Ora bisogna inviare alla scheda il programma cliccando su “Upload to I/O Board“. Quest’operazione è fondamentale per creare un collegamento tra pc e Arduino in modo che quest’ultimo possa interpretare i comandi che voi gli inviate tramite il computer. Il gioco è fatto! Se invece volete cercare di capire meglio quello che avete fatto e non vi accontentate di eseguire in maniera acritica continuate a leggere.
Codici per far lampeggiare un led con Arduino
Analizziamo riga per riga il codice per comprendere quello che abbiamo chiesto ad Arduino di fare
// Esempio 01: far lampeggiare un led
I due slash indicano l’inizio di una riga (corrispondente ad un comando) nel linguaggio di programmazione: nel caso specifico il titolo assegnato è “far lampeggiare un led”.
#define sostituisce in automatico il valore 13 ogni volta che nel programma compare il termine LED. void setup() avverte Arduino che stiamo per specificare una porzione di codice che esprime un comando.
{ la parentesi graffe si apre all’inizio del codice
pinMode(LED, OUTPUT); // imposta il pin digitale come output questo comando spiega ad Arduino come usare un pin. Scegliamo ouput visto che dobbiamo far lampeggiare il led.
} la parentesi graffa chiusa segnala la fine del setup.
void loop() E’ il fulcro del vostro programma, che si ripete ininterrottamente fino a quando la scheda è accesa.
digitalWrite(LED, HIGH); // accende il LED questa funzione permette di accendere il led connesso al pin selezionato. Lo stato HIGH indica che sul pin è applicata una tensione di +5 V
delay(1000); // aspetta un secondo Ci mostra la durata del comando intermittente. L’ argomento numerico che indica il numero di millisecondi di attesa (in questo caso mille quindi un secondo).
digitalWrite(LED, LOW); // spegne il LED Questo comando ordina al led sul pin 13 di spegnersi delay(1000); // aspetta un secondo Indica la frequenza: in questo caso il diodo connesso al pin 13 resta spento per 1 secondo prima di riaccendersi.
E ora l’etilometro fai da te
Il meccanismo che questo progetto ci insegna è alla base di ogni progetto realizzato con Arduino: una volta installato il programma non devi far altro che inviare alla scheda il comando che vuoi fargli eseguire (mediante il codice specifico che trovi sul sito). Arduino si limiterà ad interpretare ed eseguire il tuo comando.
Detto così sembra proprio facile no? La settimana prossima allora vedremo se lo è veramente…

Hai ragione, è vero…
E anche io sono molto contento che venga portato avanti questo esperimento, non solo perche Edi82 potrà migliorare le sue skills ma perchè questo lascerà una testimonianza di come sia user-friendly il mondo di Arduino.
Quando si prova un minuto ad astrarsi dal suo colore, dalla sua veste e dalla semplicità della GUI, ci si rende facilmente conto che si sta parlando di un linguaggio di programmazione pseudo-c, di un ambiente di sviluppo che si avvale di una struttura precisa, di funzioni e variabili, di puntamento ad indirizzi di memoria ma anche di valori di tensione da rilevare.
Insomma, quando si compie l’arduo passo successivo, ovvero cercare di capire che cosa si è fatto davvero quando si è acceso un LED, ci si rende conto di quanto sia stato davvero facile, intuitivo e veloce ottenere un risultato che prima sembrava impossibile e di esclusiva competenza di chi ha studiato la materia…
Certo, un esperimento di questo tipo rischia di far sembrare lo studio superfluo.
È evidente che non sia così perché se si volesse davvero approfondire soltanto le tematiche connesse con Processing e Wiring ci sarebbe da studiare una vita intera.
Ma forse sta proprio in questo l’ennesimo punto di forza di questo progetto, ovvero dare la possibilità reale a chiunque di rendersi conto che c’è del bello e del divertente nel mondo che per anni è stato descritto come quello dei nerd 😀
Io, dal canto mio, ho trovato la mia esperienza con Arduino molto positiva e stimolante perché mi ha dato la possibilità di iniziare davvero mettere le mani su alcune cose che avevo studiato solo teoricamente ma soprattutto di approfondire quelle che in realtà non erano state minimamente toccata nell’ambito del corso studi.
Inoltre c’è un fattore da non sottovalutare assolutamente: l’ambiente di sviluppo di Arduino ha dei grossissimi problemi nel debug. Ci sono troppe cose che succedono all’insaputa anche dello stesso programmatore, troppe istruzioni che vengono tradotte senza che questo processo sia trasparente e questo può essere un problema quando l’esperimento diventa complicato oppure il codice si compone di molte righe.
Ecco un altro spunto che lancia Arduino, forse senza volerlo troppo, in realtà, oppure esserne troppo cosciente: cercarsi un ambiente di sviluppo in cui le cose che succedono si vedono chiaramente per guadagnare, per se stessi e per la propria applicazione, un profilo più maturo e professionale.
Scrissi un articolo proprio su questo qualche tempo fa:
Arduino ha vinto, cerchiamo di non perdere noi ora
Direi che tutto dipende da COME viene spiegata la programmazione embedded.
Male non farebbe in effetti. 🙂