🔔 Arduino • LDR • Allarme luminoso

Buzzer e fotoresistenza con Arduino: allarme controllato dalla luce

Realizziamo un semplice sistema di allarme che legge la luminosità ambientale con una fotoresistenza LDR e attiva un buzzer quando il livello di luce scende sotto una soglia impostata.

Difficoltà Principiante
Sensore LDR su A0
Uscita Buzzer su pin 8
In poche parole: Arduino misura la luce tramite la fotoresistenza. Se il valore letto scende sotto la soglia impostata, il buzzer viene attivato.

Cosa imparerai

  • come leggere una fotoresistenza con analogRead();
  • come usare una soglia per prendere una decisione;
  • come pilotare un buzzer tramite un’uscita digitale;
  • come usare una condizione if / else;
  • come trasformare una misura ambientale in un’azione automatica.

Come funziona il progetto

La fotoresistenza cambia la propria resistenza in funzione della luce. Nel circuito viene utilizzata insieme a una resistenza da 10 kΩ per creare un partitore di tensione collegato all’ingresso analogico A0.

Arduino legge continuamente il valore analogico e lo confronta con una soglia. Quando la luminosità è inferiore al valore impostato, il buzzer viene acceso. Quando la luce torna sopra la soglia, il buzzer viene spento.

Concetto chiave: questo progetto introduce una logica molto comune nei sistemi automatici: misura → confronto → azione.

Materiale necessario

🔌 Arduino Uno o compatibile
☀️ 1 fotoresistenza LDR
🔔 1 buzzer piezo
〰️ 1 resistenza da 10 kΩ
🧩 Breadboard
🔗 Cavetti jumper

Kit Arduino consigliato

Se non possiedi ancora i componenti puoi utilizzare un kit Arduino completo con sensori, buzzer, LED, resistenze e breadboard.

🛒 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.

Schema di collegamento

La fotoresistenza viene collegata al pin A0, mentre il buzzer viene controllato dal pin digitale 8.

Schema logico:
5V → LDR → A0 → Resistenza 10 kΩ → GND
Pin 8 → Buzzer → GND
Schema Arduino con buzzer e fotoresistenza LDR

Collegamento del buzzer e della fotoresistenza ad Arduino.

Codice Arduino commentato

Buzzer e fotoresistenza con Arduino
// ==========================================================
// BUZZER E FOTORESISTENZA CON ARDUINO
// Allarme sonoro controllato dalla luminosità
// ==========================================================

// Pin analogico collegato al partitore con la fotoresistenza
const int ldrPin = A0;

// Pin digitale collegato al buzzer
const int buzzerPin = 8;

// Soglia di luminosità.
// Se il valore letto scende sotto 500,
// Arduino considera l'ambiente abbastanza buio
// da attivare il buzzer.
int threshold = 500;

void setup() {

  // Imposta il pin del buzzer come uscita
  pinMode(buzzerPin, OUTPUT);

}

void loop() {

  // Legge il valore analogico proveniente dalla fotoresistenza.
  // Il valore può variare indicativamente da 0 a 1023.
  int lightValue = analogRead(ldrPin);

  // Se la luminosità scende sotto la soglia impostata...
  if (lightValue < threshold) {

    // ...attiva il buzzer
    digitalWrite(buzzerPin, HIGH);

  }
  else {

    // Se la luminosità è superiore alla soglia,
    // spegne il buzzer
    digitalWrite(buzzerPin, LOW);

  }

}

Il codice spiegato passo passo

1

Definiamo i pin

La fotoresistenza viene letta su A0, mentre il buzzer è collegato al pin digitale 8.

2

Impostiamo la soglia

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

3

Leggiamo la luminosità

analogRead(ldrPin) acquisisce il valore presente sull’ingresso analogico.

4

Confrontiamo il valore

La condizione if (lightValue < threshold) verifica se la luminosità è inferiore alla soglia.

5

Attiviamo il buzzer

Se la condizione è vera, il pin 8 viene portato su HIGH. In caso contrario viene portato su LOW.

Regola la soglia: ogni ambiente restituisce valori diversi. Se il buzzer suona troppo presto o troppo tardi, modifica threshold.

Come vedere il valore della LDR sul Monitor Seriale

Per tarare meglio la soglia puoi visualizzare il valore letto da A0 direttamente nel Monitor Seriale.

Versione di test con Monitor Seriale
const int ldrPin = A0;
const int buzzerPin = 8;

int threshold = 500;

void setup() {

  pinMode(buzzerPin, OUTPUT);

  // Avvia la comunicazione seriale
  Serial.begin(9600);

}

void loop() {

  // Legge il valore della fotoresistenza
  int lightValue = analogRead(ldrPin);

  // Mostra il valore sul Monitor Seriale
  Serial.print("Luminosita: ");
  Serial.println(lightValue);

  // Controlla la soglia
  if (lightValue < threshold) {
    digitalWrite(buzzerPin, HIGH);
  }
  else {
    digitalWrite(buzzerPin, LOW);
  }

  // Piccolo ritardo per rendere più leggibili i dati
  delay(100);

}

Simulazione online

Puoi provare il progetto anche in simulazione tramite Tinkercad.

▶️ Apri la simulazione Tinkercad

Scarica lo sketch

⬇️ Scarica buzzer_con_fotoresistenza.ino

Debug rapido

  • controlla il collegamento della fotoresistenza;
  • verifica la resistenza da 10 kΩ;
  • controlla che il buzzer sia collegato al pin 8;
  • verifica il collegamento a GND;
  • prova a cambiare il valore di threshold;
  • usa il Monitor Seriale per capire quali valori legge realmente A0.

Varianti del progetto

  • aggiungere un LED di segnalazione;
  • far emettere al buzzer toni diversi;
  • attivare il buzzer solo dopo alcuni secondi di buio;
  • realizzare un semplice allarme per rilevare un’ombra o un passaggio;
  • controllare una lampada tramite relè;
  • visualizzare il livello di luce su un display.

Cosa devi ricordare

  • La fotoresistenza fornisce ad Arduino un valore analogico.
  • La soglia stabilisce quando il sistema deve reagire.
  • if / else permette di scegliere tra due azioni.
  • Il buzzer viene controllato come una normale uscita digitale.
  • La soglia va adattata alla luce reale dell’ambiente.

Domande frequenti

Perché il buzzer suona sempre?

Controlla la soglia e i collegamenti della LDR. Usa il Monitor Seriale per osservare il valore letto da A0 e scegliere una soglia più adatta.

Posso cambiare il valore 500?

Sì. È solo una soglia iniziale. Ogni ambiente può richiedere un valore diverso.

Posso far suonare il buzzer quando c’è molta luce?

Sì. Basta invertire la condizione, ad esempio confrontando il valore con > invece di <.

Posso aggiungere anche un LED?

Sì. Puoi usare un secondo pin digitale per accendere un LED insieme al buzzer o usarlo come indicatore separato.