Sito web di notizie tecnologiche e videogames.

LED con luminosità automatica

37

Vedremo in questo articolo come è possibile realizzare un LED che adatti la sua luminosità a quella dell’ambiente che lo circonda.

Immaginate di voler fare in modo che la luce a LED della vostra scrivania aumenti di intensità pian piano che il sole comincia a scendere nel pomeriggio. 

Per fare in modo che la luce si adatti alla luce saranno necessari i seguenti componenti:

  • Scheda Arduino Mega 2560
  • LED di qualsiasi colore
  • Resistenza R1 da 220Ω
  • Resistenza R2 da 10KΩ
  • Fotoresistore: resistenza variabile in base alla luminosità presente nell’ambiente in cui si trova.

Schema

Partiamo subito con lo schema . Utilizzeremo le seguenti impostazioni per i PIN di Arduino:

  • PIN A0 usato come input analogico
  • PIN 11 usato come output

In particolare A0 sarà l’ingresso della tensione variabile generata dal partitore realizzato dal resistore R2 e il Fotoresistore (N.B. il partitore di tensione è un circuito che permette di suddividere la tensione con cui è alimentato in due tensioni differenti che sommate danno sempre il valore di alimentazione).

Mentre il PIN di output è collegato al LED come output analogico. La scelta dell’output analogico è motivata dal fatto che questa impostazione ci permette di dare una intensità numerica al valore di tensione in uscita sulla porta e questo permette di modificare la luminosità del LED.

LED con luminosità automatica

LED con luminosità automatica

Analizzando il circuito si vede subito che il diodo LED ha l’anodo collegato al PIN 11 di output di Arduino e la corrente che circola nel LED è limitata dalla resistenza R1 collegata al catodo.

Mentre il pin di ingresso analogico è collegato tra il Fotoresistore ed R2, ossia nel punto in cui si misura la variazione di tensione causata dalla variazione di resistenza del Fotoresistore.

Codice

Di seguito è riportato il codice sorgente utilizzato per l’esperimento.

int part_pin=0;// selezione del pin A0 per l'input del partitore.
int LED=11;// selezione del pin 11 per il controllo della luiminosità del LED
int val=0;// variabile di appoggio utilizzata per leggere i valori in ingresso su A0
void setup()
{
  pinMode(LED,OUTPUT);// impostazione del PIN 11 come output
  Serial.begin(9600);// impostazione del bound rate a "9600" per la comunicaizone seriale
}
void loop()
{
  // salvataggio sul del valore letto in ingresso e mappato nell'intervallo 0 - 255
  val= map(analogRead(part_pin),0,1023,0,255); 
  Serial.println(val);// invio del valore letto sulla porta seriale
  analogWrite(LED,val);// impostazione del valore di luminosità del LED 
  delay(10);// tempo di aggiornamento di 0.01 secondi.
}

Come è possibile vedere il codice è relativamente semplice, analizziamo le funzioni che nelle scorse volte non abbiamo visto:

  • val= map(analogRead(part_pin),0,1023,0,255); la funzione map è utilizzata per leggere un valore, in questo il valore della tensione sull’input analogico, che appartiene in un intervallo e mapparlo in un altro intervallo di uscita.
  • Serial.begin(9600); inizializzazione della velocità di comunicazione con la porta seriale.
  • Serial.println(val); scrive un valore sulla porta seriale.
  • analogWrite(LED,val); imposta il valore numero di uscita sul PIN che alimenta il LED (questo valore Arduino, in automatico, lo trasforma in un valore di tensione compreso tra 0V e 5V)

Vediamo un video di esempio di funzionamento.

Notare come il valore visualizzato sul computer tramite la porta seriale (USB) sia basso all’inizio quando la fotoresistenza è illuminata e come diventi alto quel valore nel momento in cui si allontana la fonte luminosa.

Commenti