Crepuscolare [Avanzato] (Smart Lamp)
Obiettivo: Accensione automatica di quattro LED al diminuire dell’intensità di luce rilevata.
Componenti elettronici:
- Arduino UNO
- Breadboard
- 4 Led
- 1 Foto-resistenza
- 4 Resistenze (100Ohm) per Led
- 1 Resistenza (2.2kOhm) per Foto-resistenza
Teoria: La 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.
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.
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.
- se il pulsante viene premuto la tensione in ingresso ad Arduino è pari a 0.
- se il pulsante non viene premuto la tensione in ingresso ad Arduino è pari a Vcc (5V)
- Resistenza di Pull Down:
- se il pulsante viene premuto la tensione in ingresso ad Arduino è pari a Vcc (5V).
- se il pulsante non viene premuto la tensione in ingresso ad Arduino è pari a 0.
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 uno o più led mediante l’istruzione condizionale IF.
Collegamento Circuitale:
Codice:
A seguire viene riportata la schematizzazione mediante flowchart dell’algoritmo utilizzato per realizzare il programma.
Codice:
[crayon-673f6faa0ca2d588440742/]
P