#define SERIAL_SPEED 9600
const int buttonPin = 12;
const int ledPin = 25;
int buttonState, prev_buttonState;
int ledState;
int reading;
unsigned long last_DebounceTime = 0;
unsigned long debounce_delay = 50;
void setup() {
// Configuracion de puertos
pinMode(ledPin, OUTPUT);
Serial.begin(SERIAL_SPEED);
// Inicializacion de variables
buttonState = 0;
ledState = LOW;
digitalWrite(ledPin, ledState);
prev_buttonState = buttonState;
// Iniciacion del puerto serial
Serial.println("Inicio...");
}
void loop() {
reading = digitalRead(buttonPin);
// Verificacion si el boton no se ha estabilizado (hay rebote)
if (reading != prev_buttonState) {
// Reset del timer asociado al rebote
last_DebounceTime = millis();
}
// Verificacion si el boton se estabilizo
if ((millis() - last_DebounceTime) > debounce_delay) {
// Se verifica se el boton cambio de valor
if (reading != buttonState) {
buttonState = reading;
Serial.println("[T]");
// Se verifica si el cambio obedece a un flanco positivo
if (buttonState == HIGH) {
// Cambio del led
Serial.print("[T+]-> Led:");
Serial.println(ledState);
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
}
}
prev_buttonState = reading;
}