LCD: Display zickt

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;
  }
}