#include <TimerOne.h>
// Pin-Definitionen
#define LED_PIN 6
#define BUTTON_PIN 5
// Globale Variablen
volatile bool ledStatus = LOW; // Zustand der LED
void setup() {
// LED als Ausgang setzen
pinMode(LED_PIN, OUTPUT);
// Button als Eingang mit Pull-Up-Widerstand
pinMode(BUTTON_PIN, INPUT_PULLUP);
// Button-Interrupt einrichten (fallende Flanke)
attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), buttonInterrupt, FALLING);
// Timer konfigurieren (wird nicht sofort gestartet)
Timer1.initialize(80000); // 80 ms (80000 Mikrosekunden)
Timer1.attachInterrupt(timerInterrupt);
Timer1.stop(); // Timer stoppen, bis der Button gedrückt wird
}
void loop() {
// Hauptprogramm bleibt leer, da die Logik über Interrupts läuft
}
// Button-Interrupt-Service-Routine (ISR)
void buttonInterrupt() {
digitalWrite(LED_PIN, ledStatus); // LED auf aktuellen Status setzen
Timer1.start(); // Timer starten
}
// Timer-Interrupt-Service-Routine (ISR)
void timerInterrupt() {
Timer1.stop(); // Timer stoppen
ledStatus = !ledStatus; // LED-Status umschalten
}