Hallo,
dann schließe den Taster Doch mal so an
Dann versuch mal den Vorschlag. Die Ausgabe erfolgt auf dem Monitor. Das Beispiel ist jetzt ohne die LCD Anzeige , aber das kannst Du sicher an den Stellen ergänzen.
Wegen des schmutzigen Entprellens mit delay(10) kann der Messfehler 10ms betragen.
/* Anschluss Taster
GND -------[ ]----- pin9
Beispiel. Stopuhr
*/
const byte btnpin = 9;// Taster schaltet nach GND
bool btnstate;
bool lastbtn;
byte counter;
byte lastcounter = 1;
uint32_t startzeit;
uint32_t messzeit;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(btnpin, INPUT_PULLUP);
}
void loop() {
delay(10); // schmutziges entprellen Messfehler kann 10ms betragen
btnstate = !digitalRead(btnpin); // !=invertiert einlesen
if (btnstate == HIGH && lastbtn == LOW) {
lastbtn = HIGH;
counter ++;
//Serial.print(counter); Serial.println(lastcounter);
}
if (btnstate == LOW) lastbtn = LOW;
if (counter > 2) counter = 0;
switch (counter) {
case 0:
startzeit = millis();
if (counter != lastcounter) {
Serial.println(" Reset.. Warte auf start");
lastcounter = counter;
}
break;
case 1:
if (counter != lastcounter) {
Serial.println("gestartet .. läuft");
lastcounter = counter;
}
break;
case 2:
if (counter != lastcounter) {
messzeit = millis() - startzeit;
Serial.print("gestoppt " );
Serial.print(messzeit); Serial.println("ms");
lastcounter = counter;
}
break;
}
}