/*
1) estadoBoton4 != estadoBotonAnterior4: Esta condición comprueba si el estado actual del botón 4 es diferente al estado anterior.
Esto es esencial para detectar cuando el botón ha cambiado de estado y para evitar falsas detecciones debido al rebote.
2) estadoBoton4 == LOW: Esta condición verifica si el botón 4 está en su estado activado, es decir, si está presionado.
Esto asegura que la acción solo se active cuando el botón está presionado, lo que es crucial para un manejo preciso
de las entradas de los botones.
3) millis() - tiempoAnterior4 > tiempoAntirebote: Esta condición comprueba si ha pasado suficiente tiempo desde la última
vez que se registró una pulsación del botón 4. Esto implementa un tiempo de debounce para filtrar los rebotes mecánicos del botón,
garantizando que solo se registre una pulsación del botón después de que haya pasado el tiempo especificado de rebote.
4) tiempoAnterior4 = millis();: Si todas las condiciones anteriores son verdaderas,
se actualiza el tiempo anterior de lectura del botón4 con el tiempo actual utilizando la función millis().
Esto asegura que se registre la pulsación del botón solo una vez y evita múltiples detecciones debido al rebote.
*/
int botonPin1 = A0; // Pin del botón 1
int botonPin2 = A1; // Pin del botón 2
int estadoAnterior1 = HIGH; // Estado anterior del botón 1
int estadoAnterior2 = HIGH; // Estado anterior del botón 2
unsigned long tiempoAnterior1 = 0; // Tiempo anterior de lectura del botón 1
unsigned long tiempoAnterior2 = 0; // Tiempo anterior de lectura del botón 2
const long tiempoAntirebote = 50; // Tiempo de rebote (en milisegundos)
int valor = 0; // Valor a incrementar o decrementar
void setup() {
pinMode(botonPin1, INPUT_PULLUP); // Configurar el pin del botón 1 como entrada con pull-up
pinMode(botonPin2, INPUT_PULLUP); // Configurar el pin del botón 2 como entrada con pull-up
Serial.begin(9600); // Iniciar la comunicación serial
}
void loop() {
int lecturaBoton1 = digitalRead(botonPin1); // Leer el estado actual del botón 1
int lecturaBoton2 = digitalRead(botonPin2); // Leer el estado actual del botón 2
// Realizar debounce del botón 1
if (lecturaBoton1 != estadoAnterior1 && millis() - tiempoAnterior1 > tiempoAntirebote) {
if (lecturaBoton1 == LOW) {
if (valor < 15) {
valor += 1; // Incrementa en 0.5 unidades
} else {
valor = 15;
}
Serial.print("Valor incrementado: ");
Serial.println(valor);
// Serial.println(lecturaBoton1);
}
tiempoAnterior1 = millis(); // Actualizar el tiempo anterior de lectura del botón 1
}
// Realizar debounce del botón 2
if (lecturaBoton2 != estadoAnterior2 && millis() - tiempoAnterior2 > tiempoAntirebote) {
if (lecturaBoton2 == LOW) {
if (valor > 0) {
valor -= 1; // Incrementa en 0.5 unidades
} else {
valor = 0;
}
Serial.print("Valor decrementado: ");
Serial.println(valor);
// Serial.println(lecturaBoton2);
}
tiempoAnterior2 = millis(); // Actualizar el tiempo anterior de lectura del botón 2
}
// Actualizar el estado anterior del botón 1 y 2
estadoAnterior1 = lecturaBoton1;
estadoAnterior2 = lecturaBoton2;
}