Archive for marzo 31st, 2011

Fading

giovedì, marzo 31st, 2011

Ciao a tutti, in questo tutorial vedremo come creare un effetto dissolvenza su un led grazie ai pin PWM. Questa volta il led lo collegheremo (sempre con la sua resistenza in serie) al pin digitale 9. Vi starete chiedendo perchè il pin digitale se il tutorial è nella categoria dei pin analogici?

Ve lo spiego subito, in pratica la scheda Arduino UNO è dotata di 14 pin digitali di cui 5 contrassegnati con il simbolo ˜ vicino al suo corrispettivo numero.

I pin sono: 11, 10, 9, 6, 5, 3;

Questi pin sono in grado di fornire un segnale PWM(Pulse-width modulation) in italiano modulazione di larghezza di impulso, ed è un tipo di modulazione analogica in cui l’informazione è codificata sotto forma di durata nel tempo di ciascun impulso di un segnale.

Ora passiamo al circuito, colleghiamo come abbiamo sempre fatto la resistenza al led e poi al pin 9 infine non ci rimane che scrivere il nostro programma:

int value = 0;  //Variabile per tenere l'attuale valore
#define ledpin 9  //Led connesso al pin 9

void setup()
{
}
void loop()
{
     //Dissolvenza
     for (value = 0; value <= 255; value+=5)
     {
         analogWrite(ledpin, value);  //Setto il valore sul led da 0 a 255
         delay(30);
     }
 
     for (value = 255; value >= 0; value-=5)
     {
         analogWrite(ledpin, value);
         delay(30);
     }   
}

Non credo ci sia nulla da spiegare su codice tranne per il fatto che se avete notato non ho scritto nulla all’interno di setup, il motivo è che quando si tratta di pin analogici non c’è bisogno di dichiararli ne come INPUT ne come OUTPUT.

Ingresso analogico

giovedì, marzo 31st, 2011

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