// Definieer de pinnen
const int ledPin1 = 7; // LED 1 aangesloten op digitale pin 7
const int ledPin2 = 8; // LED 2 aangesloten op digitale pin 8
const int buttonPin = 3; // Drukknop aangesloten op digitale pin 3 (interrupt pin 1)
// Variabele om de LED 2 status bij te houden
volatile bool ledState2 = false;
// Timer variabelen voor LED 1
unsigned long previousMillis = 0; // Opslag vorige millis()
const long interval = 2000; // Interval van 2 seconden
// Interrupt service routine (ISR)
void toggleLED2() {
// Wissel de LED 2 status
ledState2 = !ledState2;
// Zet LED 2 aan of uit afhankelijk van de nieuwe status
digitalWrite(ledPin2, ledState2);
// Print "interrupt" naar de Serial Monitor
Serial.println("interrupt");
}
void setup() {
// Initialiseer de seriële communicatie
Serial.begin(9600);
// Stel de LED pinnen in als uitgang
pinMode(ledPin1, OUTPUT);
pinMode(ledPin2, OUTPUT);
// Stel de drukknop pin in als ingang met interne pull-up weerstand
pinMode(buttonPin, INPUT_PULLUP);
// Initialiseer de LED status
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
// Configureer de externe interrupt op pin 3 (interrupt nummer 1) op een vallende flank
attachInterrupt(digitalPinToInterrupt(buttonPin), toggleLED2, FALLING);
}
void loop() {
// Huidige millis() waarde
unsigned long currentMillis = millis();
// Controleer of de 2 seconden interval is verstreken
if (currentMillis - previousMillis >= interval) {
// Sla de huidige millis() waarde op
previousMillis = currentMillis;
// Wissel de LED 1 status
digitalWrite(ledPin1, !digitalRead(ledPin1));
}
}