Sensore di pioggia con Arduino: LED e misura analogica
Impariamo a usare un sensore di pioggia con Arduino sfruttando sia l’uscita digitale per capire se è presente acqua, sia l’uscita analogica per osservare quanto varia il segnale del sensore.
Cosa imparerai
- come collegare un sensore di pioggia ad Arduino;
- la differenza tra uscita digitale e analogica;
- come usare
digitalRead()eanalogRead()nello stesso progetto; - come accendere un LED quando viene rilevata acqua;
- come leggere i valori sul Monitor Seriale;
- come calibrare meglio il sensore.
Come funziona un sensore di pioggia
Il sensore di pioggia utilizzato in questo progetto è composto da una superficie conduttiva e da un modulo elettronico. Quando sulla superficie sono presenti gocce d’acqua, il comportamento elettrico del sensore cambia e il modulo produce un segnale che Arduino può leggere.
Nella pagina originale viene sfruttata una caratteristica molto utile: il modulo mette a disposizione una uscita digitale e una uscita analogica.
| Uscita | A cosa serve | Arduino |
|---|---|---|
| Digitale | Indica uno stato pioggia / non pioggia | Pin 2 |
| Analogica | Restituisce un valore variabile del sensore | A0 |
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito utilizzano LED, resistenze, sensori, breadboard e cavetti. Un kit completo è comodo per iniziare senza acquistare ogni componente separatamente.
👉 Guarda il kit Arduino consigliatoLink 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?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Schema di collegamento
Schema del progetto con uscita digitale, lettura analogica e LED.
Pin utilizzati
| Elemento | Pin Arduino | Funzione |
|---|---|---|
| Uscita digitale sensore | D2 | Rilevamento stato |
| LED | D3 | Segnalazione visiva |
| Uscita analogica sensore | A0 | Valore del sensore |
Come interpreta il codice l’uscita digitale
Nel progetto originale il sensore lavora con logica attiva bassa: quando digitalRead() restituisce 0, il LED viene acceso; quando restituisce 1, il LED viene spento.
Codice Arduino commentato
// ==========================================================
// SENSORE DI PIOGGIA CON ARDUINO
// Lettura digitale + analogica
// ==========================================================
const int pinIngresso = 2; // Uscita digitale del sensore
const int pinLed = 3; // LED di segnalazione
const int pinAnalogico = A0; // Uscita analogica del sensore
void setup() {
// Avvia la porta seriale a 9600 baud
Serial.begin(9600);
// Configura il segnale digitale del sensore come ingresso
pinMode(pinIngresso, INPUT);
// Configura il LED come uscita
pinMode(pinLed, OUTPUT);
}
void loop() {
// Legge lo stato digitale del sensore
int pioggia = digitalRead(pinIngresso);
// Nel modulo usato nel progetto originale
// LOW corrisponde al rilevamento di acqua
if (pioggia == LOW) {
digitalWrite(pinLed, HIGH);
}
else {
digitalWrite(pinLed, LOW);
}
// Legge anche il valore analogico
int misurazione = analogRead(pinAnalogico);
// Visualizza la misura sul Monitor Seriale
Serial.println(misurazione);
// Aggiorna una volta al secondo
delay(1000);
}
Il codice spiegato passo passo
Leggiamo l’uscita digitale
digitalRead(pinIngresso) restituisce soltanto due stati: HIGH oppure LOW.
Accendiamo il LED
Se il modulo segnala la presenza di acqua, il LED viene acceso.
Leggiamo A0
analogRead(A0) restituisce un valore numerico che possiamo usare per osservare come varia il segnale.
Visualizziamo il valore
Serial.println() invia la misura al Monitor Seriale dell’IDE Arduino.
Come usare il Monitor Seriale
Dopo aver caricato lo sketch, apri il Monitor Seriale e imposta la velocità a 9600 baud. Vedrai comparire un nuovo valore circa ogni secondo.
Prova prima con il sensore asciutto e annota il valore. Poi aggiungi alcune gocce d’acqua sulla superficie e osserva come cambia la lettura. Questo è il modo più semplice per capire il comportamento del tuo modulo.
Come calibrare il sensore
Molti moduli per sensore pioggia includono un piccolo trimmer che regola la soglia dell’uscita digitale. Ruotandolo puoi modificare il punto in cui il segnale digitale cambia stato.
Se invece vuoi avere il massimo controllo via software, puoi ignorare l’uscita digitale e usare soltanto analogRead(), scegliendo una soglia direttamente nel codice.
const int sensorePin = A0;
const int ledPin = 3;
// Valore di esempio:
// va calibrato sul sensore reale
const int soglia = 500;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
// Legge il valore analogico
int valore = analogRead(sensorePin);
// Il verso del confronto dipende
// dal comportamento del modulo reale
if (valore < soglia) {
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
}
delay(200);
}
Perché il valore analogico non è una misura in millimetri di pioggia
La lettura di analogRead() indica il livello elettrico prodotto dal sensore, ma non rappresenta direttamente una quantità meteorologica calibrata in millimetri di precipitazione.
È quindi più corretto interpretare il valore come un’indicazione relativa: superficie asciutta, presenza di gocce, superficie molto bagnata.
Scarica lo sketch originale
⬇️ Scarica sketch_sensore_pioggia.inoDebug rapido
- controlla VCC e GND del modulo;
- verifica l’uscita digitale sul pin 2;
- verifica l’uscita analogica su A0;
- controlla polarità del LED e resistenza da 220 Ω;
- se il LED funziona al contrario, controlla la logica del modulo;
- se l’uscita digitale cambia troppo presto o troppo tardi, regola il trimmer;
- usa il Monitor Seriale per verificare i valori analogici reali.
Varianti del progetto
- aggiungere un buzzer per un allarme sonoro;
- chiudere automaticamente una finestra tramite servomotore;
- ritirare una tenda motorizzata quando inizia a piovere;
- mostrare lo stato su LCD o OLED;
- inviare una notifica tramite ESP32;
- registrare gli eventi su scheda SD;
- usare il sensore in una piccola stazione meteo didattica.
Manutenzione del sensore
La piastra sensibile viene direttamente a contatto con l’acqua. Nei progetti di lunga durata è buona pratica controllarla periodicamente, mantenerla pulita e verificare che non presenti ossidazione o residui.
Cosa devi ricordare
- Il modulo può fornire un’uscita digitale e una analogica.
digitalRead()restituisce HIGH o LOW.analogRead()permette di osservare un valore variabile.- Il Monitor Seriale è molto utile per calibrare il sensore.
- Il trimmer del modulo regola la soglia digitale.
- Il valore analogico non equivale direttamente ai millimetri di pioggia.
Domande frequenti
Perché il LED resta sempre acceso?
Controlla se il sensore è bagnato, verifica il trimmer e osserva lo stato dell’uscita digitale.
Posso usare solo l’uscita analogica?
Sì. È spesso la soluzione migliore se vuoi impostare la soglia direttamente nel software.
Posso aggiungere un buzzer?
Sì. Quando viene rilevata acqua puoi attivare anche un buzzer, seguendo la stessa logica usata per il LED.
Posso usarlo all’esterno in modo permanente?
Il progetto è ottimo a scopo didattico. Per installazioni permanenti serve proteggere adeguatamente l’elettronica e considerare usura, corrosione e affidabilità del sensore nel tempo.

