Incominciamo a parlare degli Analog I/O.

Partiamo con il dire che un segnale analogico può assumere tutti i valori compresi tra 0V e +5V (nel caso della nostra scheda Arduino), a differenza del segnale digitale che può assumere solo due valori 0V e +5V.

p digitale-300x111

Questo tutorial vuole spiegare come collegare un potenziometro alla scheda arduino e a seconda del valore che il potenziometro assume, modificare la velocità di lampeggio di un led.

Ci serve un qualsiasi tipo di potenziometro e come sempre un led con la sua resistenza da mettere in serie.

Un potenziometro è una resistenza variabile dotata di tre pin esterni:

potenziometro-300x222

 

Il circuito da realizzare è il seguente:

Immagine3-169x300

 

Quindi come potete vedere colleghiamo il potenziometro nel modo seguente: il pin sinistro al +5V il pin centrale al pin analogico 2 e il pin destro al GND mentre la resistenza e il led come abbiamo sempre fatto.

Passiamo al codice sorgente:

 

 

#define potPin 2 //Pin di ingresso per il potenziometro
#define ledPin 13 //Pin per il led
int val = 0; //Variabile per salvare lo stato proveniente dal sensore

void setup()
{
pinMode(ledPin, OUTPUT); //Dichiara il ledPin come OUTPUT
}

void loop()
{
val = analogRead(potPin); //Legge il valore dal sensore
digitalWrite(ledPin, HIGH); //Accende il led
delay(val); //Ritardo a seconda del valore del sensore
digitalWrite(ledPin, LOW); //Spegne il led
delay(val); //Ritardo a seconda del valore del sensore
}

 


Analisi del codice sorgente:

1- analogRead(): Questa funzione restituisce un numero compreso tra 0 e 1023 che è proporzionale alla quantità di tensione applicata al pin. Ossia varia tra 0 = 0V e 1023 = 5V. Il programma scritto prende questo valore e lo mette all’interno della funzione delay(), in questo modo si va a modificare la velocità di lampeggio del led.

Visto che la funzione analogRead() restituisce un numero compreso tra 0 e 1023 se volessimo conoscere a che valore di tensione corrisponde un dato numero basta impostare una semplice proporzione:

1023 : 5 = x : Xv dove

x = numero restituito dalla funzione

Xv = tensione corrispondente

quindi per calcolarla: Xv = (5 * x) / 1023