Documentos de Académico
Documentos de Profesional
Documentos de Cultura
h>
#include <LiquidCrystal_I2C.h>
void setup() {
lcd.init();
lcd.backlight();
lcd.print("Temporizador");
pinMode(BOTON_INICIO_1, INPUT_PULLUP);
pinMode(BOTON_PAUSA_1, INPUT_PULLUP);
pinMode(BOTON_INICIO_2, INPUT_PULLUP);
pinMode(BOTON_PAUSA_2, INPUT_PULLUP);
pinMode(BOTON_REINICIO, INPUT_PULLUP);
pinMode(BOTON_PAUSA_J1, INPUT_PULLUP);
pinMode(BOTON_PAUSA_J2, INPUT_PULLUP);
pinMode(BOTON_AUMENTAR_TIEMPO, INPUT_PULLUP); // Configurar el nuevo bot�n
pinMode(PIN_BUZZER, OUTPUT);
pinMode(RELE_JUGADOR_1, OUTPUT);
pinMode(RELE_JUGADOR_2, OUTPUT);
digitalWrite(RELE_JUGADOR_1, LOW);
digitalWrite(RELE_JUGADOR_2, LOW);
}
void loop() {
manejarBotones();
actualizarLCD();
contarTiempo();
delay(1000);
}
void manejarBotones() {
if (digitalRead(BOTON_INICIO_1) == LOW && creditos > 0 && !
temporizadorActivoJugador1) {
temporizadorActivoJugador1 = true;
creditos--;
tiempo_jugador_1 = tiempoInicialAjustado;
digitalWrite(RELE_JUGADOR_1, HIGH);
reproducirTono();
}
if (digitalRead(BOTON_REINICIO) == LOW) {
if (millis() - tiempoUltimoReinicio > ESPERA_REINICIO) {
creditos++;
tiempoUltimoReinicio = millis();
if (!temporizadorActivoJugador1 && !temporizadorActivoJugador2) {
tiempo_jugador_1 = tiempoInicialAjustado;
tiempo_jugador_2 = tiempoInicialAjustado;
}
reproducirTono();
}
}
void actualizarLCD() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" CREDITOS: ");
lcd.print(creditos);
lcd.setCursor(0, 1);
if (temporizadorActivoJugador1) {
lcd.print("t1: ");
if (pausaJugador1) {
lcd.print("Pausado");
} else {
lcd.print(tiempo_jugador_1);
}
}
lcd.setCursor(8, 1);
if (temporizadorActivoJugador2) {
lcd.print("t2: ");
if (pausaJugador2) {
lcd.print("Pausado");
} else {
lcd.print(tiempo_jugador_2);
}
}
}
void contarTiempo() {
if (temporizadorActivoJugador1 && !pausaJugador1 && tiempo_jugador_1 > 0) {
tiempo_jugador_1--;
} else if (temporizadorActivoJugador1 && tiempo_jugador_1 == 0) {
temporizadorActivoJugador1 = false;
digitalWrite(RELE_JUGADOR_1, LOW);
reproducirTono();
}
void reproducirTono() {
tone(PIN_BUZZER, 1000, 1500);
}
void aumentarTiempoInicial() {
if (tiempoInicialAjustado < TIEMPO_MAXIMO) {
tiempoInicialAjustado += 60;
}
}