Sensore livello acqua con Arduino e allarme buzzer
Costruiamo un semplice sistema di monitoraggio che legge un sensore analogico di livello dell’acqua e attiva un buzzer quando il valore supera una soglia impostata.
Introduzione
Vuoi sapere quando il livello dell’acqua raggiunge una condizione critica? Con Arduino possiamo leggere continuamente il segnale proveniente da un sensore di livello e confrontarlo con una soglia.
Nel progetto base il buzzer si attiva quando il valore letto supera il limite impostato. È un esperimento utile per capire il principio alla base di molti sistemi di monitoraggio e allarme.
- leggere un ingresso analogico con analogRead();
- osservare i valori sul Monitor Seriale;
- calibrare una soglia in base al sensore;
- attivare un buzzer quando si verifica una condizione;
- evitare continui ON/OFF vicino alla soglia usando l’isteresi.
Materiale necessario
🧰 Non hai ancora i componenti?
Un kit Arduino per principianti contiene molti dei componenti utilizzati nei progetti del sito.
Vedi il kit Arduino consigliato →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.📘 Vuoi imparare Arduino passo dopo passo?
Nei miei libri trovi spiegazioni, schemi e numerosi progetti pratici dedicati ad Arduino.
Scopri i miei libri su Arduino →Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.Schema di collegamento
💧 Sensore livello acqua
- VCC → 5V
- GND → GND
- OUT → A0
🔊 Buzzer attivo
- positivo (+) → pin 9
- negativo (−) → GND

Prima del codice: calibra il sensore
Il valore 500 non è universale. Il sensore può restituire valori diversi a seconda del modulo, dell’acqua, della superficie bagnata e del montaggio. Conviene quindi osservare prima le letture sul Monitor Seriale e scegliere una soglia adatta al proprio esperimento.
Codice Arduino
Rispetto alla versione base ho aggiunto una piccola isteresi. L’allarme entra quando il valore supera la soglia alta e si disattiva soltanto quando scende sotto una soglia leggermente più bassa. Questo evita che il buzzer continui ad accendersi e spegnersi quando la misura oscilla vicino al limite.
// ============================================
// Progetto 116 - Sensore livello acqua
// Allarme con buzzer e isteresi
// ============================================
const byte sensoreLivello = A0;
const byte buzzer = 9;
// Valori da calibrare sul proprio sensore
const int sogliaAllarme = 500;
const int isteresi = 30;
bool allarmeAttivo = false;
void setup() {
pinMode(buzzer, OUTPUT);
digitalWrite(buzzer, LOW);
Serial.begin(9600);
}
void loop() {
int valore = analogRead(sensoreLivello);
Serial.print("Livello acqua: ");
Serial.println(valore);
// Attiva l'allarme sopra la soglia
if (!allarmeAttivo && valore >= sogliaAllarme) {
allarmeAttivo = true;
digitalWrite(buzzer, HIGH);
Serial.println("ALLARME: livello alto!");
}
// Lo spegne solo quando il valore
// scende abbastanza sotto la soglia
if (allarmeAttivo &&
valore <= (sogliaAllarme - isteresi)) {
allarmeAttivo = false;
digitalWrite(buzzer, LOW);
Serial.println("Livello tornato normale");
}
delay(250);
}Come funziona
Lettura del sensore
Arduino acquisisce il valore presente sul pin A0 tramite analogRead().
Confronto con la soglia
Quando la lettura raggiunge o supera la soglia impostata, il programma considera il livello critico.
Attivazione dell’allarme
Arduino porta HIGH il pin 9 e il buzzer attivo emette il segnale acustico.
Ritorno alla normalità
Grazie all’isteresi, l’allarme viene spento solo quando la lettura scende abbastanza sotto la soglia.
Attenzione al tipo di sensore
I comuni sensori resistivi con piste metalliche esposte sono adatti soprattutto a esperimenti e prototipi. Se restano immersi o alimentati continuamente possono degradarsi nel tempo. Per un’installazione permanente conviene scegliere un sensore progettato specificamente per il monitoraggio continuo del livello.

