Arduino
Link Articolo Originale: http://www.grix.it/viewer.php?page=5481
Ciao a tutti, questo è il mio primo articolo su Grix, vi voglio presentare l'Arduino (forse molti di voi già lo conoscono). Arduino è una piattaforma open-source basata su una scheda a microcontrollore ATMege 328. Voglio presentare questa "schedina" perchè l'ho trovata molto interessante e con infinite applicazioni pratiche. Arduino si può programmare facilmete in C grazie al suo stupendo Ambiente di Sviluppo.
Vediamo cosa ci offre l'Arduino :
Sul lato superiore sono presenti * 2 pin Tx Rx (pin 0,1) per la comunicazione tramite seriale
* 12 pin Input/Output Digitali (GPIO 2-13)
Sul lato inferiore c'è un pin per prelevare 5v , uno per la 3,3v , pin di massa e soprattutto 6 ingressi analogici con convertitore A/D a 10 bit.
L'alimentazione per questo "gioiellino" e di 5v che può essere "iniettata" dal connettore visibile a sinistra o dalla porta USB utlizzata dall'ambiente di sviluppo per trasmettere il compilato del programma.
Navigando su Internet si possono trovare numerose applicazioni sull'Arduino (Arduino Synth, Arduino Punk Console, Arduino Theremin, Arduino Domotica etc etc..) quello che voglio fare io è una semplice presentazione della piattaforma.
Vediamo alcuni esempi :
Utilizzo delle porte digitali in OUTPUT
Per testare una porta digitale in uscita l'esempio più banale che mi viene in mente è di impostare un valore logico alto e basso su una porta(pin digitale 2), intervallato ad esempio da 500us.
Per prima cosa si avvia il programma per l'ambiente di sviluppo scaricabile gratuitamente su http://www.arduino.cc disponibile per Linux , Mac e Windows.
Ecco come appare
Poi all'iterno dell'editor si inseriscono le librerie da importare (in questo caso vista la banalità del programma nessuna libreria è da inserire).
Poi si deve inserire la funzione setup() { } dove al suo interno si imposta la direzione della porta(Input o Output) e ad esempio la velocità della comunicazione della porta seriale.
void setup() {
pinMode(2,OUTPUT); //Impostato pin digitale 2 in uscita
Serial.begin(9600); //Impostata velocità comunicazione seriale
}
Successivamente si inserisce il metodo main() che in questo ambiente di sviluppo si chiama loop() e sta a ricordare che tale metodo viene eseguito in un ciclo infinito.
void loop() {
digitalWrite(2,HIGH); //uscita digitale 2 a livello logico alto
delayMicroseconds(500); //attendo 500us
digitalWrite(2,LOW); //uscita digitale 2 a livello logico basso
delayMicroseconds(500); //attendo 500us
}
Cliccando sulla freccia rivolta verso destra posta in alto a sinistra ,se non ci sono errori di sintassi, il programma viene compilato e spedito tramite la porta USB all'Arduino.
Un messaggio (visibile in basso nella console dell'ambiente) conferma il corretto uploading.
Non ci resta che collegare un oscilloscopio alla porta 2 dell'Arduino per testare il nostro programma:
Il risultato ovviamente è una bella onda quadra :
Avendo scelto un delay di 500us la freq in unscita, da come si può notare sullo screenshot dell'oscilloscopio, è di circa 1kHz.
Utilizzo delle porte digitali in INPUT
Per testare una porta digitale in ingresso si può ad esempio leggere lo stato logico di un pulsantino collegato all'Arduino.
Il valore del resistore può essere di 2,2 k, quando il pulsante non è premuto si avrà un valore logico alto al pin 2 , mentre se viene premuto il pulsante si avrà un valore logico basso sul pin 2.
Nella console dell'ambiente di sviluppo si vedono i messaggi restituiti da Serial.println() tramite la porta USB.
Utilizzo delle porte Analogiche in INPUT
La funzione per leggere un ingresso di tipo analogico è analogRead() , essa accetta come parametro in ingresso (dentro le parentesi) il numero del pin della porta e restituisce un valore intero compreso tra 0 e 1024. Viene letto un valore massimo di tensione di 5v in 1024 unità , 4,9 mv per unità.
Per testare tale funzione si può provare a collegare un potenziometro all'ingresso analogico 0.
Collegare il centrale del potenziometro da 4k7 al pin 0 dell'Arduino, i due restanti pin del potenziometro vanno collegati uno a 5v ed uno a massa.
Le letture restituite :