Capacitación Arduino · Sensor de lluvia
Sensor de agua y lluvia (T1592 / HW-038): mientras más mojadas sus pistas, más alto el valor. LED verde = seco, LED rojo = ¡lluvia! Simulado en Tinkercad y en OpenCircuits.
El componente
Cómo funciona
analogRead.Truco de simulación
| Parte del kit | La reemplazamos con | Arduino |
|---|---|---|
| Sensor de lluvia (pistas + S) | Sensor de humedad del suelo (sí existe en Tinkercad) también analógico: más agua = valor más alto | A0 |
| Umbral | El código: if (agua > 300) | — |
| Aviso | LED verde (seco) y LED rojo (lluvia), con 220 Ω | D4 · D6 |
Los dos tienen 3 pines (VCC, GND y la señal) y se conectan igual.
Paso 1 · Componentes
Buscar: Arduino
Buscar: Placa de pruebas
Buscar: humedad. Hace de sensor de lluvia.
Una para cada LED.
Seco.
¡Lluvia!
Paso 2 · Circuito
Paso 2 · Conexiones
| Alimentación | ||
| Arduino 5V | Riel + inferior | |
| Arduino GND | Riel − inferior | |
| Sensor (fuera de la protoboard) | ||
| Sensor VCC | Riel + | |
| Sensor GND | Riel − | |
| Sensor SIG | Arduino A0 | |
| LED verde · seco | ||
| — | LED cátodo / ánodo (fila e) | Columna 3 / 4 |
| — | 220 Ω | Columna 4 → 8 (fila c) |
| Arduino D4 | Columna 8 | |
| Columna 3 | Riel − | |
| LED rojo · lluvia | ||
| — | LED cátodo / ánodo (fila e) | Columna 10 / 11 |
| — | 220 Ω | Columna 11 → 15 (fila c) |
| Arduino D6 | Columna 15 | |
| Columna 10 | Riel − | |
Paso 3 · Código en bloques
Variables → Crear variable: agua.
Paso 3 · Código C++
// C++ code // int agua = 0; void setup() { pinMode(A0, INPUT); pinMode(6, OUTPUT); pinMode(4, OUTPUT); }
void loop() { agua = analogRead(A0); if (agua > 300) { digitalWrite(6, HIGH); digitalWrite(4, LOW); } else { digitalWrite(6, LOW); digitalWrite(4, HIGH); } delay(10); // Delay a little bit to improve simulation performance }
Paso 4 · Simular
| Siempre verde | La señal no llega a A0 o falta VCC del sensor. |
| Siempre rojo | El umbral está muy bajo (por ejemplo 0). |
| No cambia nunca | La lectura debe estar dentro de «siempre». |
| Ningún LED enciende | Revisa la orientación (pata doblada = ánodo). |
Paso 5 · Kit real
| Sensor de lluvia | Arduino |
|---|---|
| − | GND |
| + | 5V |
| S | A0 |
El código no cambia: sigue leyendo A0 y comparando con 300. Los LEDs y sus 220 Ω se quedan.
Moja solo las pistas, nunca la parte con los componentes. Con el tiempo el cobre se oxida: en proyectos reales se alimenta solo al medir.
Alternativa · OpenCircuits
El bloque verde de la categoría T1592 lee el sensor y compara en un paso: «¿está lloviendo? (nivel mayor que 300)». No hace falta variable.
En la categoría también están «nivel de agua (0 a 700)» y «mostrar nivel de agua» (Monitor serie).
// C++ code // void setup() { pinMode(6, OUTPUT); pinMode(4, OUTPUT); }
void loop() { if (analogRead(A0) > 300) { digitalWrite(6, HIGH); digitalWrite(4, LOW); } else { digitalWrite(6, LOW); digitalWrite(4, HIGH); } delay(10); // Delay a little bit to improve simulation performance }
analogRead(A0).Para seguir
Muestra el nivel de agua en el Monitor serie. Pista: Serial.println(agua).
Agrega un LED amarillo: seco, unas gotas (100 a 300) y lluvia fuerte.
Pon el sensor de pie en un vaso y muestra el nivel en la LCD I2C.
Si llueve, un servo gira 90° (cierra una ventana de cartón) y suena el buzzer.