Crepuscolare (Smart Lamp)

Obiettivo: Accensione automatica di un LED al diminuire dell’intensità di luce rilevata.



Componenti elettronici:

  • Arduino UNO
  • Breadboard
  • 1 Led
  • 1 Foto-resistenza
  • 1 Resistenza (2.2kOhm)

TeoriaLa foto resistenza è un componente elettronico la cui resistenza è inversamente proporzionale alla quantità di intensità luminosa che lo colpisce. Questo significa che la corrente (inversamente proporzionale alla resistenza) aumenta all’aumentare dell’intensità luminosa.
A seguire, viene riportato la caratteristica Ohm/Lux di una fotoresistenza tipicamente impiegata in applicazioni realizzate mediante Arduino.

Datasheet Fotoresistenza

Nel caso specifico, è importante ricordare che Arduino non può rilevare né variazioni di resistenza né variazioni di corrente. Il microcontrollore può infatti analizzare solamente valori di tensione. Per questo motivo, l’utilizzo di una resistenza è indispensabile al fine di collegare correttamente la fotoresistenza ad Arduino. Nel dettaglio, il circuito previsto per trasformare la variazione di resistenza in una variazione di tensione è il partitore di tensione.

Partitore di Tensione e Fotoresistenza

Nel circuito presentato, la variazione di luminosità produce una variazione del valore della fotoresistenza. Di conseguenza anche il valore della corrente risulta funzione dell’intensità luminosa e di conseguenza anche il valore di tensione in ingresso ad Arduino. Nel dettaglio:

  • Un incremento della luminosità porta ad un decremento della tensione.
  • Un decremento della luminosità porta ad un incremento della tensione.

Attraverso l’utilizzo del comando analogRead è possibile leggere la tensione su uno specifico pin analogico (A0-A5) di Arduino. La funzione analogRead restituisce un valore compreso tra 0 e 1023 a seconda della tensione letta dal microcontrollore.
A titolo di esempio, se il valore di tensione letto utilizzando la funzione analogRead sul pin A0 di Arduino risulta pari a 613. Il valore di tensione può essere facilmente calcolato:

valoreTensioneAnalogico = 613/1023*5 = 3V

dove:

  • Il valore analogico di tensione letto utilizzando l’istruzione analogRead è pari a 613
  • Il valore di tensione massimo che può essere letto dalla funzione analogRead è pari a 1023
  • La tensione massima in uscita ad Arduino è pari a 5V

Tale valore può essere facilmente utilizzato per controllare un led mediante l’istruzione condizionale IF.

Collegamento Circuitale:

Collegamento Circuitale

Codice:

A seguire viene riportata la schematizzazione mediante flowchart dell’algoritmo utilizzato per realizzare il programma.

Flowchart


[crayon-67500ebbb414d097808358/]

Personalizzazioni:

E’ possibile modificare il circuito aggiungendo altri led. E’ inoltre possibile modificare il codice al fine di realizzare una lampada che accenda un numero differente di led in funzione della luminosità.