// Variablen für die mit millis() ermittelte Zeit
// damit nur jeweils ein Tasterdruck erkannt wird
static unsigned long GesicherteStartZeit = 0;
unsigned long Startzeit;
int LED = 7;
int TASTER = 8;
// Zustand der LED: ein- oder ausgeschaltet
bool ZustandLED = false;
void setup()
{
pinMode(LED, OUTPUT);
pinMode(TASTER, INPUT_PULLUP);
}
void loop()
{
int Tasterdruck = digitalRead(TASTER);
// Taster wurde gedrückt
if (Tasterdruck == LOW)
{
// aktuelle Zeit sichern
Startzeit = millis();
/*
bei mehr als 50 Millisekunden Differenz
zwischen der aktuellen und der gesicherten Zeit
kann der Taster als gedrückt betrachtet werden
-> ZustandLED umdrehen
aus false wird true LED einschalten
aus true wird false -> LED ausschalten
*/
if (Startzeit - GesicherteStartZeit > 50)
{
ZustandLED = !ZustandLED;
}
// Startzeit zurücksetzen
GesicherteStartZeit = Startzeit;
digitalWrite(LED, ZustandLED);
}
}Lösung mit millis()