#include <LiquidCrystal_I2C.h>
///Declaramos botones
#define Boton1 25
#define Boton2 26
#define Boton3 27
#define Boton4 32
#define Parada 14
#define Electrovalvula1 15
#define Electrovalvula2 2
#define Electrovalvula3 4
#define Electrovalvula4 5
#define Bomba 18
#define Refinadora 19
//Declaramos nuestro objeto lcd, direccion I2C, columnas, filas
LiquidCrystal_I2C lcd(0x27, 20, 4);
int estadoBoton1 = LOW;
int ultimoEstadoBoton1 = HIGH; // PULLUP activa
int estadoBoton2 = LOW;
int estadoBoton3 = LOW;
int estadoBoton4 = LOW;
int estadoBomba = LOW;
int estadoRefinadora =LOW;
void setup() {
//Iniciamos nuestra pantalla
lcd.init();
//Colocamos luz de fondo
lcd.backlight();
//Configurar el sensor
pinMode(Electrovalvula1, OUTPUT);
pinMode(Electrovalvula2, OUTPUT);
pinMode(Electrovalvula3, OUTPUT);
pinMode(Electrovalvula4, OUTPUT);
pinMode(Bomba, OUTPUT);
pinMode(Refinadora, OUTPUT);
pinMode(Boton1, INPUT_PULLUP);
pinMode(Boton2, INPUT_PULLUP);
pinMode(Boton3, INPUT_PULLUP);
pinMode(Boton4, INPUT_PULLUP);
pinMode(Parada, INPUT_PULLUP);
}
void loop() {
digitalWrite(Electrovalvula1, LOW);
delay(50);
digitalWrite(Electrovalvula2, LOW);
delay(50);
digitalWrite(Electrovalvula3, LOW);
delay(50);
digitalWrite(Electrovalvula4, LOW);
delay(50);
digitalWrite(Bomba, LOW);
delay(50);
digitalWrite(Refinadora, LOW);
delay(50);
while(1){
reinicio:
int lecturaBoton1 = digitalRead(Boton1);
delay(50);
int lecturaBoton2 = digitalRead(Boton2);
delay(50);
int lecturaBoton3 = digitalRead(Boton3);
delay(50);
int lecturaBoton4 = digitalRead(Boton4);
delay(50);
lcd.setCursor(0,1);
lcd.println("Arranquemos");
lcd.setCursor(1,2);
lcd.println("Todo Fino");
delay(1000);
if (lecturaBoton1 == LOW) {
estadoBoton1 = !estadoBoton1; // Invierte el estado
digitalWrite(Electrovalvula1, estadoBoton1);
delay(50); // Debounce simple
estadoBomba = !estadoBomba;
estadoRefinadora = !estadoRefinadora;
digitalWrite(Bomba, estadoBomba);
delay(500);
digitalWrite(Refinadora, estadoRefinadora);
goto reinicio;
}
if (lecturaBoton2 == LOW) {
estadoBoton2 = !estadoBoton2; // Invierte el estado
digitalWrite(Electrovalvula2, estadoBoton2);
delay(50); // Debounce simple
lcd.setCursor(1,2);
lcd.println("boton 2 pulsado");
delay(1000);
goto reinicio;
}
if (lecturaBoton3 == LOW) {
estadoBoton3 = !estadoBoton3; // Invierte el estado
digitalWrite(Electrovalvula3, estadoBoton3);
delay(50); // Debounce simple
lcd.setCursor(1,2);
lcd.println("boton 3 pulsado");
delay(1000);
goto reinicio;
}
if (lecturaBoton4 == LOW) {
estadoBoton4 = !estadoBoton4; // Invierte el estado
digitalWrite(Electrovalvula4, estadoBoton4);
delay(50); // Debounce simple
lcd.setCursor(1,2);
lcd.println("boton 4 pulsado");
delay(1000);
goto reinicio;
}
}
}