Arduino Duemilanove: Hello, Blink!
25 gennaio 2009 , di Boliboop
Eccoci al secondo appuntamento con Arduino. Dopo aver semplicemente accesso il nostro amico, ora, seguendo i tutorial del sito web di Arduino, ci imbattiamo come primo programma d’esempio in Blink. Nella descrizione annessa a tale esempio viene spiegato come sia uso comune, in quasi tutti i linguaggi di programmazione, introdurre la sintassi e le prime funzioni con un software che mostri sullo schermo la classica frase Hello, World!. Ma dal momento che Arduino non ha uno schermo, faremo lampeggiare un led… in segno di saluto.
Come abbiamo notato nel precedente articolo introduttivo, sono installati su Arduino almeno due led: il primo è arancione ed è contrassegnato dall’etichetta PWR (che sta per power) e segnala se c’è alimentazione, mentre il secondo è verde ed ha l’etichetta L e per quel che sappiamo, per ora, il suo unico scopo e quello di essere un led, appunto.
Questo secondo led chiamato L è connesso al pin 13, quindi: inviare corrente al pin 13 significa accendere il led L. Ricordiamocelo.

Apriamo il software Arduino e copiamo il seguente codice (in alternativa lo si può prelevare dal menu File>Sketchbook>Examples>Digital>Blink)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | int ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } |
prima di inviarlo ad Arduino, vediamo in dettaglio come si legge questo codice (che è scritto in linguaggio C) e cosa ordina di fare al dispositivo.
La riga 1 del codice recita int ledPin = 13; e non fa altro che impostare una variabile chiamata ledPin (ma la si può chiamare come si vuole) al valore 13. Ricordatevi sempre il punto e virgola alla fine di una istruzione, comprese quelle all’interno dei blocchi definiti dalle parentesi graffe.
La riga 3 apre, con il comando void setup(), una sezione entro la quale si possono settare alcuni parametri iniziali di Arduino. In questo caso, in riga 5, il comando pinMode(ledPin, OUTPUT); non fa l’altro che imporre ad Arduino uno specifico uso per il pin 13, cioè come output. In parole povere con questo comando stiamo dicendo che il pin 13 non dev’essere usato per raccogliere informazioni (input) ma per mostrare informazioni (output).
Il gruppo successivo di istruzioni, introdotto dal comando void loop(), descrive la sequenza di istruzioni che Arduino deve eseguire continuamente. Loop infatti sta per ciclo, e tutto ciò che si trova tra le rige 10 e 13 viene ripetuto all’infinito.
Ma cosa dicono le istruzioni tra le righe 10 e 13? Essendo il pin 13 uno della seriei dei pin DIGITAL, la riga 10 assegna a questo pin un valore HIGH (ovvero alto) tramite il comando digitalWrite(ledPin, HIGH);. Questo significa, nella fattispecie, che la riga 10 ordina ad Arduino di applicare una differenza di potenziale di 5 Volt al pin 13 (e corrisponde all’1 del sistema binario usato in elettronica). questo perché la variabile ledPin è stata impostata al valore 13, nella prima riga del codice.
La riga successiva, la 11, ordina ad Arduino di attendere per un secondo esatto e lo fa tramite il comando delay(1000); il cui valore tra parentesi è espresso in millisecondi.
La riga 12 imposta il valore del pin 13 su LOW, lo zero digitale, zero anche in Volt.
L’ultima riga del blocco è identica alla riga 11, e serve ad attendere un altro secondo prima di ripetere l’intero ciclo.
Ok, abbiamo parlato di pin, e il led che doveva lampeggiare? E’ sufficiente ricordarsi che il led L e il pin 13 sono connessi nella scheda Arduino modello Duemilanove. E quindi i valori di potenziale HIGH e LOW di cui abbiamo parlato vengono automaticamente visti dal led L che comincerà immediatamente a lampeggiare, con il ritmo di una accensione od uno spegnimento al secondo.
Ok, come si carica il programma su Arduino per farglielo eseguire? Prima di tutto è sempre buona norma controllare che il codice scritto sia conforme alle specifiche della scheda Arduino utilizzata. Per questo, premendo Command+R (su Mac) o andando sul menu Sketch>Verify/Compile, possiamo chiedere alla piattaforma di programmazione di controllare la correttezza del codice.
Se, dopo qualche secondo, appare in basso la scritta Done compiling. vuol dire che la verifica è andata a buon fine e non ci sono né errori di sintassi né incompatibilità con l’hardware (ah, Arduino si chiama così proprio per assonanza con hardware… l’avevate già capito? Bravi.).
Sotto a Done compiling appare anche una riga che ci dice quanta memoria occuperebbe questo programma una volta caricato su Arduino:
Binary sketch size: 1124 bytes (of a 14336 byte maximum)
Arduino è dotato di una memoria flash da 16 Kbyte, di cui circa 2 KB utilizzati dal bootloader (il sistema che consente ad Arduino di ricevere correttamente i programmi dal computer).
Ok, carichiamo il programma su Arduino? Sì, è sufficiente premere Command+U, oppure andare su File>Upload to I/O Board e il programma, in pochi secondi, viene caricato e mandato in esecuzione.
Durante la fase di caricamento vedrete alcuni led lampeggiare anche molto velocemente. Si tratta del già conosciuto led L ed anche dei due nuovi led RX e TX (si tratta di indicatori di lettura e scrittura sulla memoria di Arduino). Finito il vortice di lampeggii, il led L comincia a comportarsi esattamente come definito nel programma, alternando accensioni e spegnimenti al ritmo di una al secondo.
Complimenti, il vostro primo Blink funziona egregiamente!
Per interrompere il programma bisogna spegnere Arduino staccando il cavo USB, ma ricordate che il programma è memorizzato e, appena ricollegate Arduino (alla porta USB, ad un alimentatore per iPod, ad un trasformatore a corrente continua tra 7 e 12 Volt o ad una batteria) il programma ripartirà immediatamente.
Nel prossimo articolo vedremo come personalizzare questo primo programma per esplorare la logica con cui è scritto e nuovi modi per espandere Arduino.

j ha detto
:: row: dove si compre
dic 19 2009 alle 04:21