Jou, meine Lösung sieht folgend aus - DAS verstehe ich auch...
Frage:HTML-Code:void loop() { AusgSekTakt(); // Sek.Takt-Anzeige static unsigned long TasteGedrueckt = 0; static int TasteLiZustand = 0; if(Entprell(TasteLiPin) == 1) { if(TasteLiZustand == 0) { TasteLiZustand = 1; TasteGedrueckt = millis(); } TZ3("Taste gedrueckt+entprellt seit ", millis() - TasteGedrueckt, " ms"); } else TasteLiZustand = 0; } //Tastenentprellung int Entprell(int pin){ static int TastenStatusNeu = 0; static int TastenStatusAlt = 0; static unsigned long TastStartZeit = 0; TastenStatusNeu = digitalRead(pin); if(TastenStatusNeu != TastenStatusAlt) { TastenStatusAlt = TastenStatusNeu; if(TastenStatusNeu == 1) { TastStartZeit = millis(); } } if((millis() >= TastStartZeit + EntprellZeit) && TastenStatusNeu == 1) return 1; else return 0; }
1. Hat es irgend welche Vor/Nachteile, ob "TasteGedrueckt", "TasteLiZustand " als static- oder global-Variable deklariert werden? Ohne static funktioniert der loop nicht.
2. Seht ihr irgend wo einen Fehler oder code-Unsauberkeiten?
Meine nächsten Baustellen;
Schritt 01: Rückgabe von 5 Zustands-Peaks; 0=LOW, 1= HIGH, 2=Flanke steigend, 3=Flanke fallend, 5=unbekannt
Schritt 02: Beliebig viele Tasten/Schalteingänge, teils zeitgleich innerhalb von [ms], entprellen.
Lesezeichen