#define BUTTON_PIN 2
int LED = 13;
int LEDState = LOW;
byte lastButtonState;
unsigned long lastTimeButtonStateChanged = millis();
unsigned long debounceDuration = 50; //millis
void setup(){
pinMode(LED, OUTPUT);
pinMode(BUTTON_PIN, INPUT);
lastButtonState = digitalRead(BUTTON_PIN);
}
void loop(){
if ( millis() - lastTimeButtonStateChanged >= debounceDuration){
byte buttonState = digitalRead(BUTTON_PIN);
if (buttonState != lastButtonState){
lastTimeButtonStateChanged = millis();
lastButtonState = buttonState;
if(buttonState == LOW){
LEDState = !LEDState;
digitalWrite(LED, LEDState);
}
}
}
}