Arduino Programm millis () stoppen / zurücksetzten?

2 Antworten

Den Zähler kannst Du nicht anhalten.

Eigentlich schon, aber dann stoppst Du alles was diesen Zähler benutzt, also einige Funktionen haben dann Fehlfunktionen oder warten "für immer" bevor die sich beenden. Also "ganz heißes Eisen!".

Was Du machen kannst ist, einfach den Wert den das hat in eine Variable kopieren. Die Kopie bleibt dann "für immer" wie sie zum Zeitpunkt der Kopie war.

unsigned long startzeit, endzeit;
....
....
startzeit = millis();  //Startzeitpunkt erfassen
....
....
....

      while (taster==1); //Endlosschleife bis Tastereingang nicht mehr HIGH ist
      endzeit = millis();
....
....
....

Und "endzeit - startzeit" ist dann die Dauer zwischen starten und stoppen.

Woher ich das weiß:Berufserfahrung

Du kannst millis() nicht stoppen oder zurück setzen. Die laufen los und laufen immer weiter, bis der Wert überläuft und von vorne beginnt. Du kannst den Wert nur zwischenspeichern und die Differenz ausrechnen lassen... Zwingend "unsigned long" für die Variable verwenden...


OtherSquidYT 
Beitragsersteller
 15.07.2025, 21:02

Ok, danke. Aber wie sieht der Code dafür aus?

RareDevil  15.07.2025, 21:10
@OtherSquidYT

Wenn das Startereignis eintritt, speicherst Du den Wert in die deklarierte variable und wenn der richtige Taster gedrückt wurde, subtrahierst Du von millis() den gespeicherten Wert und hast die Zeitdifferenz in Millisekunden...