ivan
Arduino Blink
Tutorials -
Venerdì 03 Settembre 2010 10:42
Scritto da ivan

In molti linguaggi di programmazione il primo programma che si fa è visualizzare a video "hello world!". Dato che la scheda Arduino non ha uno schermo noi faremo lampeggiare un led ben preciso...in segno di saluto.

Sulla scheda Arduino sono installati 4 led. Il led PWR (power) che è di colore verde e si accende quando colleghiamo Arduino al computer, quindi quando c'è alimentazione. Il led L che è di colore arancione ed è connesso al pin 13, quindi: inviare corrente al pin 13 significa accendere il led L. Ricordiamocelo. Poi ci sono i led TX e RX che vedremo più tardi.

 

arduino pin 13

Apriamo il software Arduino (che possiamo tranquillamente scaricare dal sito) e copiamo il seguente codice (in alternativa lo si può prelevare dal menu File>Examples>Digital>Blink).

const 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 e cosa ordina di fare al dispositivo.

La riga 1 del codice recita const int ledPin = 13; e non fa altro che dichiarare una costante chiamata ledPin (ma che si può chiamare come si vuole) al valore 13. Ricordatevi sempre il punto e virgola alla fine di una istruzione (stiamo utilizzando il c++), comprese quelle all’interno dei blocchi definiti dalle parentesi graffe.

La riga 3 apre, con il comando void setup(), una funzione 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 serie 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 (1000 ms=1s).

La riga 12 imposta il valore del pin 13 su LOW, lo zero digitale, zero anche in Volt (spento).

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.

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 32 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 i led RX e TX (si tratta di indicatori di lettura e scrittura sulla memoria di Arduino). Finito il vortice di lampeggi, 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 correttamente!

Per interrompere il programma bisogna spegnere Arduino staccando il cavo USB, ma ricordate che il programma è memorizzato e, appena ricollegate Arduino il programma ripartirà immediatamente. Quando caricherete un nuovo programma, quello precedentemente memorizzato verrà cancellato.

Se al posto del led L volete far lampeggiare un altro led messo da voi, potete collegare il piedino più corto (-) al pin GND e quello più lungo (+) al pin 13 e vedrete che il risultato è lo stesso.

blink esteso con led

PS. Questo tutorial è stato tradotto e arricchito dal tutorial in inglese che si trova sul sito di Arduino.

 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi