#include <ESP32Servo.h>
Servo valvulaServo; // Objeto para controlar el servo que hace de válvula
const int turbidezPin = 34; // Pin analógico seguro del ESP32 (GPIO 34)
const int umbralSucio = 500;// Límite para decidir si el agua está sucia (ajustable)
void setup() {
valvulaServo.attach(13); // Conectamos el servo al pin GPIO 13 del ESP32
valvulaServo.write(0); // Iniciamos con la válvula cerrada (0 grados)
Serial.begin(9600); // Iniciamos la comunicación para ver los datos
}
void loop() {
// 1. Leemos cuánta suciedad hay en el agua desde el pin 34
int nivelTurbidez = analogRead(turbidezPin);
// 2. Mostramos el valor en la pantalla de la computadora
Serial.print("Nivel de turbidez: ");
Serial.println(nivelTurbidez);
// 3. Tomamos una decisión: si supera el límite, abrimos el tanque
if (nivelTurbidez > umbralSucio) {
Serial.println("¡Agua turbia detectada! Vaciando tanque...");
valvulaServo.write(90); // Abrimos la válvula girando el servo a 90 grados
delay(5000); // Esperamos 5 segundos a que se vacíe
} else {
Serial.println("El agua esta limpia. Tanque cerrado.");
valvulaServo.write(0); // Cerramos la válvula volviendo a 0 grados
}
delay(1000); // Esperamos 1 segundo antes de volver a medir
}
No hay comentarios:
Publicar un comentario