Ingresso analogico

Ciao a tutti, la serie di tutorial riguardanti la categoria Digital I/O è finita, ora 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.

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:

Il circuito da realizzare è il seguente:

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