Archivi categoria: Sketch e circuiti di base

Il LED diventa sensore di luce

Abbiamo già visto in precedenza cosa sono i LED, ovvero dei perticolari diodi in grado di emettere luce (la sigla sta appunto per Light Emission Diode). In una serie di articoli vi avviamo mostrato come usarli per sviluppare dei progetti con l’Arduino.

Abbiamo anche parlato delle fotoresistenze dedicandogli un articolo apposito.

Fin quì nulla di nuovo, ma se volessimo usare un LED come se fosse una fotoresistenza? L’utilizzo di un LED è bidirezionale: se sottoposto ad una tensione opportuna emette luce (che può ricadere nel visibile, nell’UV o nell’infrarosso a seconda del led), ma se sottoposto ad una sorgente luminosa genera una tensione ai suoi capi.

Seppur tale tensione è dell’ordine di poco più di un Volt è sufficiente per una applicazione di misurazione dell’intensità luminosa di una sorgente. A dirla tutta esistono delle applicazioni sperimentali per l’uso dei LED come celle fotovoltaiche, ma i risultati non sono ancora molto soddisfacenti.

Quello che faremo sarà collegare il LED ad un ingresso analogico dell’arduino e visualizzare le letture di luminosità in seriale. In particolare collegheremo il polo positivo alla porta 3V3 dell’arduino ed il negativo alla porta analogica 3.

Per il montaggio del circuito seguite il seguente schema:

led_come_sensore

Il codice da usare per leggere sul monitor seriale i valori è:

[arduino]

void setup() {
Serial.begin(9600);
}

void loop() {
int LEDsensorValue = analogRead(3);
Serial.println(LEDsensorValue);
}
[/arduino]

Mi raccomando, nel codice usate il comando println così da avere un valore per ogni rigo, altrimenti la lettura risulta troppo confuzionaria.

Regoliamo il blinking con un potenziometro

Precedentemente abbiamo imparato a far lampeggiare (Blink) un LED mediante l’Arduino. In quel semplice esempio la velocità di lampeggiamento veniva impostata nel codice e, quindi, non era possibile farla variare (a meno di andare a cambiare il valore impostato nel codice).

Adesso vedremo come modificare il codice ed il circuito per permetterci di regolare il Blinking con un potenziometro.

Fare ciò vuol dire aggiungere un potenziometro al nostro sistema, collegarlo ad un ingresso analogico ed usare il valore letto da tale ingresso per stabilire la velocità del lampeggiamento.

Vediamo subito come fare il circuito:

analoginputoutput_bb

Nell’immagine ho usato il pin 3 (che supporta il PWM) solo perchè l’avevo già fatta per un altro esempio. Ovviamente potete usare anche una porta digitale senza PWM in quanto non è necessario per il blinking.

Adesso passiamo al codice:

[arduino]
int ledPin = 3;
int potPin= 0;
int pausa = 0;

void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(potPin, INPUT);
}

void loop()
{
pausa = analogRead(potPin);
 digitalWrite(ledPin, HIGH);
delay(pausa);
digitalWrite(ledPin, LOW);
delay(pausa);
}
[/arduino]

Come al solito nella prima parte del codice dichiariamo le variabili che ci serviranno nella seconda parte del codice.
Nel void loop abbiamo salvato il valore della lettura analogica del potenziometro all’interno della variabile pausa. Tale variabile è stata usata per impostare il tempo di lampeggiamento di un led.

Arduino e fotoresistenze

Una fotoresistenza è un particolare tipo di resistenza il cui valore (in Ohm) è in versamente proporzionale alla quantità di luce che la colpisce.

Ne deriva che la corrente che passa attraverso una fotoresistenza sia proporzionale alla sorgente luminosa che irradia la resistenza. Vi invito a leggere il seguente articolo per capire meglio il loro funzionamento

Risulta immediato pensare una sua applicazione, ad esempio, in interruttori crepuscolari.

Come prima applicazione vedremo come usare una fotoresistenza per leggere il valore di luminosità ambientale ed inviare tale valore al computer.

Occorrente:

  • Arduino
  • Breadboard (opzionale ma comoda)
  • Una Fotoresistenza
  • Una resistenza da 10KOhm (fondamentale per creare un partitore di tensione con la fotoresistenza)

Per prima cosa costruiamo il circuito (molto semplice) come riportato in figura

Arduino_fotoresistenza photocell_schem

Fatto ciò avviamo l’ambiente di sviluppo dell’arduino e carichiamo il seguente sketch che ci permetterà di avere una lettura, via seriale , del valore della luminosità:

[cpp]
int fotoresistenzaPin = 2; // Pin di collegamento del partitore

int fotoresistenzaValue; // Variavile che memorizzerà la lettura

void setup()

{

Serial.begin(9600); // Inizializzo la seriale

}

void loop()

{

int fotoresistenzaValue = analogRead(fotoresistenzaPin); // Leggo il valore della misurazione

Serial.print("Valore luminosità = ");

Serial.print(fotoresistenzaValue); //Stampo nella seriale il valore letto

delay(1000);

}
[/cpp]

Un codice così scritto funziona bene, ma può essere reso più leggibile modificandolo un po’.

Per rendere la lettura della luminosità più gradevole e funzionale impostiamo qualche semplicissima regola.

Accensione LED mediante un pulsante

Una delle periferiche di input più usate (per ovvi motivi) è il pulsante. L’uso di un pulsante mediante l’arduino è molto semplice, in pratica si programma l’arduino per fargli compiere una determinata azione (accensione led, incremento numerico, etc…) alla pressione del pulsante.

L’esempio più semplice è l’accensione di un led e qui di seguito vedrete commentato il codice da dare all’arduino e lo schema da usare per costruire questo semplice circuito. Come al solito vi mostrerò lo schema per montare il circuito nella breadboard, il schema circuitale e lo schema in PCB.

Continua la lettura di Accensione LED mediante un pulsante