/*
* Control de nivel de tanque con Arduino Uno (Automático)
* - Sensor de nivel máximo conectado al pin 2
* - Sensor de nivel mínimo conectado al pin 3
* - Bomba conectada al pin 4 (a través de un relé que se activa con LOW)
*/
#define sensorMax 2
#define sensorMin 3
#define relayPin 4
bool bombaActivada = false; // Variable para rastrear el estado de la bomba
bool sensorMaxBajo = false; // Variable para rastrear el estado del sensor de nivel máximo
bool sensorMinBajo = false; // Variable para rastrear el estado del sensor de nivel mínimo
void setup() {
pinMode(sensorMax, INPUT_PULLUP); // Configura el pin del sensor de nivel máximo como entrada con resistencia pull-up
pinMode(sensorMin, INPUT_PULLUP); // Configura el pin del sensor de nivel mínimo como entrada con resistencia pull-up
pinMode(relayPin, OUTPUT); // Configura el pin del relé como salida
digitalWrite(relayPin, HIGH); // Apaga el relé inicialmente (estado alto)
}
void loop() {
// Verifica si el sensor de nivel máximo detecta un nivel bajo
if (!digitalRead(sensorMax)) {
sensorMaxBajo = true;
} else {
sensorMaxBajo = false;
}
// Verifica si el sensor de nivel mínimo detecta un nivel bajo
if (!digitalRead(sensorMin)) {
sensorMinBajo = true;
} else {
sensorMinBajo = false;
}
// Si el sensor de nivel máximo está en bajo y luego el sensor de nivel mínimo está en bajo
if (sensorMaxBajo && sensorMinBajo) {
// Si la bomba no está activada, la activa
if (!bombaActivada) {
digitalWrite(relayPin, LOW); // Activa el relé (estado bajo) para encender la bomba
bombaActivada = true; // Actualiza el estado de la bomba
}
} else if (!sensorMinBajo) { // Si el sensor de nivel mínimo está en alto
// Espera hasta que el sensor de nivel máximo esté en alto para apagar la bomba
while (!digitalRead(sensorMax)) {
// Espera hasta que el sensor de nivel máximo esté en alto
}
// Apaga la bomba y actualiza el estado de la bomba
digitalWrite(relayPin, HIGH); // Desactiva el relé (estado alto) para apagar la bomba
bombaActivada = false; // Actualiza el estado de la bomba
}
}