🌧 Arduino • Sensore pioggia • Analogico + digitale

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.

DifficoltàPrincipiante
IngressiD2 + A0
UscitaLED su D3
In poche parole: il modulo fornisce due tipi di informazione: una risposta digitale utile per sapere se il sensore considera presente la pioggia e una lettura analogica utile per osservare come cambia il livello rilevato.

Cosa imparerai

  • come collegare un sensore di pioggia ad Arduino;
  • la differenza tra uscita digitale e analogica;
  • come usare digitalRead() e analogRead() 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.

UscitaA cosa serveArduino
DigitaleIndica uno stato pioggia / non pioggiaPin 2
AnalogicaRestituisce un valore variabile del sensoreA0
Concetto chiave: l’uscita digitale semplifica la decisione “piove/non piove”, mentre l’uscita analogica permette di osservare un valore continuo e quindi di realizzare una calibrazione più personalizzata.

Materiale necessario

🔌 Arduino Uno
🌧 Sensore di pioggia
🔴 LED rosso
〰️ Resistenza da 220 Ω
🧩 Breadboard
🔗 Cavetti jumper

🧰 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 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?

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

Schema Arduino con sensore di pioggia e LED

Schema del progetto con uscita digitale, lettura analogica e LED.

Pin utilizzati

ElementoPin ArduinoFunzione
Uscita digitale sensoreD2Rilevamento stato
LEDD3Segnalazione visiva
Uscita analogica sensoreA0Valore 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.

Attenzione: non tutti i moduli si comportano necessariamente nello stesso modo. Se il tuo LED funziona “al contrario”, controlla l’uscita digitale del modulo e la regolazione del suo trimmer.

Codice Arduino commentato

Sensore di pioggia con LED e Monitor Seriale
// ==========================================================
// 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

1

Leggiamo l’uscita digitale

digitalRead(pinIngresso) restituisce soltanto due stati: HIGH oppure LOW.

2

Accendiamo il LED

Se il modulo segnala la presenza di acqua, il LED viene acceso.

3

Leggiamo A0

analogRead(A0) restituisce un valore numerico che possiamo usare per osservare come varia il segnale.

4

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.

Esempio con soglia analogica
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.ino

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