// Learn about the ESP32 WiFi simulation in
// https://docs.wokwi.com/guides/esp32-wifi
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2);
// Pines de los botones
const int buttonA = 32;
const int buttonB = 33;
// Variables para los contadores
unsigned long contadorA = 240; // 4 minutos en segundos
unsigned long contadorB = 240; // 4 minutos en segundos
unsigned long tiempoA = 0;
unsigned long tiempoB = 0;
// Variables para el tiempo transcurrido
unsigned long tiempoInicioA = 0;
unsigned long tiempoInicioB = 0;
// Variables para el estado de los botones
bool botonAPresionado = false;
bool botonBPresionado = false;
// Variables para el estado de los contadores
bool contadorAEncendido = false;
bool contadorBEncendido = false;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Mesa 100 - Ronda 04");
lcd.setCursor(0, 1);
lcd.print("VicMan - Cebadona");
// Inicializa los pines de los botones como entradas
pinMode(buttonA, INPUT_PULLDOWN);
pinMode(buttonB, INPUT_PULLDOWN);
// Inicializa las variables de tiempo
tiempoInicioA = millis();
tiempoInicioB = millis();
}
void loop() {
// Lee el estado de los botones
botonAPresionado = !digitalRead(buttonA);
botonBPresionado = !digitalRead(buttonB);
// Comprueba si se ha presionado el botón A
if (botonAPresionado && !contadorAEncendido) {
contadorAEncendido = true;
contadorBEncendido = false;
tiempoInicioA = millis();
}
// Comprueba si se ha presionado el botón B
if (botonBPresionado && !contadorBEncendido) {
contadorBEncendido = true;
contadorAEncendido = false;
tiempoInicioB = millis();
}
// Actualiza los contadores
if (contadorAEncendido) {
tiempoA = millis() - tiempoInicioA;
if (tiempoA >= contadorA) {
contadorA = 0;
tiempoA = 0;
} else {
contadorA = contadorA - (tiempoA / 1000);
}
}
if (contadorBEncendido) {
tiempoB = millis() - tiempoInicioB;
if (tiempoB >= contadorB) {
contadorB = 0;
tiempoB = 0;
} else {
contadorB = contadorB - (tiempoB / 1000);
}
}
// Muestra el tiempo en el LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("A: ");
lcd.print(contadorA / 60);
lcd.print(":");
lcd.print(contadorA % 60);
lcd.setCursor(0, 1);
lcd.print("B: ");
lcd.print(contadorB / 60);
lcd.print(":");
lcd.print(contadorB % 60);
}