// Definición de pines
const int ledPin = 10;
const int btnSubir = 4; // Aumenta frecuencia (acorta el tiempo)
const int btnBajar = 3; // Disminuye frecuencia (alarga el tiempo)
// Variables de control de tiempo
unsigned long tiempoAnterior = 0;
int intervalo = 1000; // Iniciamos en 1000ms (1 segundo)
int estadoLed = LOW;
// Variables para detección de flancos (Pull-down)
bool ultimoEstado4 = LOW;
bool ultimoEstado3 = LOW;
void setup() {
pinMode(ledPin, OUTPUT);
// Configuración como entrada estándar (requiere resistencia externa a GND)
pinMode(btnSubir, INPUT);
pinMode(btnBajar, INPUT);
}
void loop() {
unsigned long tiempoActual = millis();
// --- Lógica del Parpadeo ---
if (tiempoActual - tiempoAnterior >= (unsigned long)intervalo) {
tiempoAnterior = tiempoActual;
estadoLed = !estadoLed;
digitalWrite(ledPin, estadoLed);
}
// --- Lógica de los Botones (Detección de flanco de subida) ---
// Botón Pin 4: Aumentar frecuencia (reducir intervalo)
bool lectura4 = digitalRead(btnSubir);
if (lectura4 == HIGH && ultimoEstado4 == LOW) {
intervalo -= 100;
if (intervalo < 50) intervalo = 50; // Límite de velocidad máxima
delay(50); // Anti-rebote (debounce) simple
}
ultimoEstado4 = lectura4;
// Botón Pin 3: Disminuir frecuencia (aumentar intervalo)
bool lectura3 = digitalRead(btnBajar);
if (lectura3 == HIGH && ultimoEstado3 == LOW) {
intervalo += 100;
if (intervalo > 3000) intervalo = 3000; // Límite de lentitud
delay(50); // Anti-rebote (debounce) simple
}
ultimoEstado3 = lectura3;
}