☀️ Arduino • Sensori • Automazione

Crepuscolare con Arduino: LED e fotoresistenza LDR

Realizziamo un semplice sistema crepuscolare capace di accendere automaticamente un LED quando la luce ambientale diminuisce, utilizzando Arduino e una fotoresistenza LDR.

Difficoltà Principiante
Sensore Fotoresistenza LDR
Concetti Ingresso analogico e soglia
In poche parole: Arduino legge il livello di luce tramite la fotoresistenza collegata all’ingresso analogico A0. Quando il valore scende sotto una soglia impostata nel programma, il LED viene acceso automaticamente.

Cosa realizzeremo

In questo progetto utilizzeremo una fotoresistenza (LDR) per creare un semplice sistema crepuscolare. La resistenza elettrica dell’LDR varia in base alla quantità di luce ricevuta:

  • più luce → resistenza più bassa;
  • meno luce → resistenza più alta.

Arduino può leggere questa variazione e decidere quando accendere automaticamente una luce. Lo stesso principio può essere utilizzato per lampioni automatici, luci da giardino, sistemi domotici e altre automazioni domestiche.

Materiale necessario

🔌 Arduino Uno o compatibile
💡 1 LED
☀️ 1 fotoresistenza LDR
〰️ 1 resistenza da 220 Ω
〰️ 1 resistenza da 10 kΩ
🧩 Breadboard e cavetti jumper

Kit Arduino consigliato

Se non possiedi ancora i componenti puoi utilizzare un kit Arduino completo con LED, resistenze, breadboard e altri componenti utili per realizzare questo e molti altri progetti.

🛒 Guarda un kit Arduino su Amazon

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Come funziona la fotoresistenza

La fotoresistenza è un sensore molto semplice. Quando la luce aumenta, la sua resistenza diminuisce; quando la luce diminuisce, la resistenza aumenta. Per permettere ad Arduino di trasformare questa variazione in un valore leggibile, l’LDR viene utilizzata insieme a una resistenza da 10 kΩ formando un partitore di tensione.

Concetto chiave: Arduino non misura direttamente la resistenza della LDR. Legge invece la tensione presente sul punto centrale del partitore tramite il pin A0.

Schema di collegamento

Il sensore di luce viene collegato all’ingresso analogico A0.

5V → LDR → A0 → Resistenza 10 kΩ → GND
Pin 13 → Resistenza 220 Ω → LED → GND

Il collegamento formato da LDR e resistenza da 10 kΩ permette quindi di ottenere sul pin A0 un valore analogico che varia con la luminosità.

Schema Arduino con LED e fotoresistenza LDR per circuito crepuscolare

Collegamento del circuito crepuscolare con Arduino, LED e fotoresistenza.

Come funziona il programma

Arduino legge continuamente il valore presente sull’ingresso analogico A0 tramite analogRead(A0). Il valore restituito varia da 0 a 1023.

Condizione Valore indicativo Comportamento
Buio Valore più basso LED acceso
Molta luce Valore più alto LED spento

Nel programma viene utilizzata una soglia iniziale di 500. Quando il valore letto è inferiore alla soglia, Arduino considera l’ambiente sufficientemente buio e accende il LED.

Codice Arduino

Crepuscolare con Arduino — LED e fotoresistenza
// Arduino Light Sensor (LDR) Example
// Accende il LED quando la luce diminuisce

const int ledPin = 13;
const int ldrPin = A0;

int threshold = 500;

void setup() {

  pinMode(ledPin, OUTPUT);

}

void loop() {

  int lightValue = analogRead(ldrPin);

  // Se il livello di luce è basso accende il LED
  if (lightValue < threshold) {
    digitalWrite(ledPin, HIGH);
  }
  else {
    digitalWrite(ledPin, LOW);
  }

}

Il codice spiegato passo passo

1

Definiamo i pin

Il LED è collegato al pin digitale 13, mentre la fotoresistenza viene letta tramite l’ingresso analogico A0.

2

Impostiamo la soglia

La variabile threshold contiene il valore di riferimento che separa la condizione di luce dalla condizione di buio.

3

Leggiamo la fotoresistenza

Con analogRead(ldrPin) Arduino acquisisce il valore analogico proveniente dal partitore di tensione.

4

Accendiamo o spegniamo il LED

Se il valore letto è inferiore alla soglia, il pin del LED viene portato su HIGH. Negli altri casi viene portato su LOW.

Regola la soglia: ogni ambiente ha livelli di luminosità diversi. Se il LED si accende troppo presto o troppo tardi, modifica il valore di threshold fino a ottenere il comportamento desiderato.

Simulazione online

Puoi provare il progetto anche attraverso la simulazione disponibile su Tinkercad.

▶️ Apri la simulazione Tinkercad

Scarica lo sketch

Se preferisci, puoi scaricare direttamente il file Arduino del progetto.

⬇️ Scarica led_e_fotoresistenza.ino

Debug rapido

Se il circuito non funziona correttamente:

  • controlla il collegamento della fotoresistenza;
  • verifica la presenza della resistenza da 10 kΩ;
  • controlla la polarità e il collegamento del LED;
  • prova a modificare il valore della soglia threshold.

Varianti del progetto

Puoi sviluppare il circuito in diversi modi:

  • accendere una lampada tramite relè;
  • controllare più LED;
  • visualizzare il livello di luminosità sul monitor seriale;
  • utilizzare il sensore all’interno di un sistema domotico.

Cosa devi ricordare

  • La fotoresistenza LDR cambia resistenza in base alla luce.
  • LDR e resistenza da 10 kΩ formano un partitore di tensione.
  • Arduino legge il livello di luce tramite l’ingresso analogico A0.
  • La soglia determina quando il LED deve accendersi.
  • La soglia può essere adattata alle condizioni reali dell’ambiente.

Domande frequenti

Perché il LED rimane sempre acceso?

Controlla i collegamenti della LDR e della resistenza da 10 kΩ. Se il circuito è corretto, prova a modificare il valore della soglia.

Posso cambiare il valore di threshold?

Sì. La soglia deve essere adattata al livello di luce presente nell’ambiente in cui utilizzi il circuito.

Posso usare il progetto per accendere una lampada?

Il progetto può essere esteso utilizzando un relè, come indicato tra le varianti del circuito.