}
//timer
unsigned long ontime = 45000;
unsigned long currentMillis;
long previousMillis = 0;
extern volatile unsigned long timer0_millis;
if .....(sind 4 regeln erfüllt starte timer - fällt eine weg stop timer -
currentMillis = millis();
else
{timer0_millis = 0; }
if (currentMillis - previousMillis > ontime) { //sind die 45 sek erfüllt starte
// Do what you want to do
timer0_millis = 0; // setze timer auf null
das sind auszüge -> es geht genau um das und nicht um den restlichen code
nochmal die Frage
Wie setzt man den timer wieder auf null im esp01 - (das delay beispiel ist mir bekannt - löst aber mein problem nicht)
das geht im arduino uno mit timer0_millis = 0;
brauche einen timer der startet wenn 4 regeln erfüllt sind
auch wenn der timer gestartet ist fällt eine regel weg muss er auf null gehen und wieder bereit sein
bleiben die regeln die volle definierte zeit erfüllt - geht zum bsp eine Lampe an danach geht der timer auf null und ist wieder bereit
testi74:
das sind auszüge -> es gteht genau um das und nicht um den restlichen code
Und genau ist das Problem.
Aus deinem "gewurschtel" kann ich nicht erkennen, welchen Timer du meinst.
Ich sehe nur die Variable, die du mit "0" beschreibst. Und das sollte so auch auf dem ESP funktionieren.
Aber behalte deinen Sketch gerne geheim, ich bin dann raus.
Du merkst Dir doch bereits den aktuellen Wert von millis() - weshalb willst Du jetzt am Timer rumbiegen und damit andere Seiteneffekte rein holen?
Du brauchst doch 'nur' die abgelaufene Zeit - und Das auch nur, wenn alle vier Bedingungen erfüllt sind.
If (alle vier Bedingungen) { if (Bedingungen_ok==false){ startzeit=millis();} Bedingungen_ok=true;} else { Bedingungen_ok=false;}
if (Bedingungen_ok==true && millis()-startzeit>1000){
//Zeit ist abgelaufen (hier 1000ms)
Bedingungen_ok=0;
}
Sollte halbwegs erkennen lassen, was ich meine.
Kleiner Tip:
Wenn Du Hilfe suchst, solltest Du nicht Allen Helfenden vor den Kopf kloppen.
Ich glaube nicht, dass du wirklich den Hardwaretimer meinst oder gar millis resetten (gaaanz schlechte Idee) willst. Schreibe doch einfach mal, was das ganze geben soll.
stoppen können , sprich die millis sind auf null gegangen
Nun wolte ich diese variabel auch bei einem esp01 verwenden, leider existiert die nicht für esp8266
die millis laufen immer weiter - wie kriege ich die wieder auf Null
wie kann ich dieses problem lösen
Vielen dank für euren input
marc
Gar nicht!
millis() funktioniert auf dem ESP gänzlich anders.
Da dein Programmdesign auf der Verwendung von timer0_millis beruht, hat es eine Abhängigkeit, welche du jetzt nicht auflösen kannst. Das Design ist kaputt.
Also, hinsetzen, und es ordentlich machen.
Ich schließe mich an, und sage auch:
timer0_millis zu manipulieren, war von Anfang an eine dumme Idee.
Und jetzt ist sie dir auf die Füße gefallen.