In Display() fehlt das Merken der Startzeit. Als Anregung:
switch (Anzeige) {
case 0:
displayanzeige = currentMillis;
Anzeige = 1;
break;
case 1:
//Displayhintergrund();
In Display() fehlt das Merken der Startzeit. Als Anregung:
switch (Anzeige) {
case 0:
displayanzeige = currentMillis;
Anzeige = 1;
break;
case 1:
//Displayhintergrund();
Wenn Du Dich mit jemamden "in 10 Minuten" verabredest, schaust Du auf Deine Uhr und merkst Dir die aktuelle Zeit. Die gemerkte Zeit vergleichst Du so lange mit der aktuellen Zeit, bis die Differenz 10 Minuten beträgt.
switch (Anzeige) {
case 0:
startZeit = currentMillis;
Anzeige = 1;
break;
case 1:
if (millis() - startZeit >= intervall) { ... }
Alternativ kannst Du Dir auch die Zielzeit merken und dann mit der aktuellen vergleichen:
switch (Anzeige) {
case 0:
zielZeit = currentMillis + intervall;
Anzeige = 1;
break;
case 1:
if (millis() >= zielZeit) { ... }
Wobei die 2. Version den Überlauf nicht sauber stemmt.
Gruß Tommy
Ach ja, der Überlauf ![]()
Gibt es eine Variante mit richtigem Überlauf?
Variante 1 macht keine Probleme.
Um das Problem oder nicht Problem zu erkennen, kann man Beispielhafte Werte kurz vor dem Überlauf sich aufschreiben und schauen was der Vergleich ergibt.
Ich habe millis() mal mit unsigned char nachgebildet. Damit kann man sich die Ausgabe bei verschiedenen if - Bedingungen im Überlaufmoment anschauen.
Gruß Tommy
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.