const int LED_PIN = 13;
const int LED_PIN2 = 12;
const int INTERRUPT_PIN = 2;
volatile bool ledState = LOW;
volatile bool ledState2 = LOW;
volatile unsigned long zeit = 0;
void setup() {
pinMode(LED_PIN, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
pinMode(INTERRUPT_PIN, INPUT);
attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), myISR, RISING); // trigger when button pressed, but not when released.
}
void loop() {
digitalWrite(LED_PIN2, ledState2);
ledState2 = !ledState2;
delay(200);
}
void myISR() {
delay(50);
if (digitalRead(INTERRUPT_PIN) == HIGH && millis() > zeit + 50) {
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
zeit = millis();
}
/*
if(millis() > zeit + 500) {
ledState = !ledState;
digitalWrite(LED_PIN, ledState);
zeit = millis();
}
*/
// note: LOW == false == 0, HIGH == true == 1, so inverting the boolean is the same as switching between LOW and HIGH.
}