Go Down

Topic: if-Schleife in die void setup (Read 1 time) previous topic - next topic

currymuetze

Hallo Chris,
das ist richtig.
Mein Problem ist aber, warum die Funktion überhaupt aufgerufen wurde?
Bedingung war doch, dass millis()<1000 sein muss, also wirklich nur direkt wenn der arduino neugestartet wird, also stecker raus und rein.
Resettet sich millis() irgendwann wieder??
Gruß

uwefed

millis() hat eine Überlauf (fängt wieder mit 0 an) nach 49 Tagen und einigen Stunden.
Grüße Uwe

ChrisS

Kann also nicht der Auslöser sein, da 49 Tage nach der Entwicklung längst nicht rum sind...

Stromausfall, Schwankungen?

Mhh, Breadboard, oder "echter" Arduino?
Spannungsversorgung stabilisiert?

mmh, also ich sehe eigentlich keinen Fehler (was nicht viel heißt), aber ich würde an Deiner Stelle trotzdem einen "Triggerbegrenzer" einbauen....
<1000 heißt ja alle Millis die kleiner als 1000 sind... das heißt es wird 999 mal ausgelöst.... sofern er das denn schafft innerhalb der cyclen... was bestimmt nicht so ist, und daher so oder so zu einem "Überlauf" > an Aufgaben führt... was allerdings garnicht Dein Problem ist....

mmh, da bin ich jetzt auch gespannt....

Lieber Gruß
ChrisS
Sturmfabrik - mediale Dienstleistungen
www.sturmfabrik.de

MueThoS

Ich weiß zwar auch nicht warum der Code ausgeführt wird obwohl millies größer hätte sein sollen aber was mir auch noch aufgefallen ist:
Bei 18 Uhr und 8 Uhr sind beide Bedingungen für eine Stunde wahr!


millies geht echt über 49 Tage?
Das ist aber ein ziemlich große Zahl dann >4.000.000.000 wenn ich mich nicht verrechnet habe.

Thorsten

currymuetze

#19
Apr 04, 2011, 09:05 am Last Edit: Apr 04, 2011, 09:07 am by currymuetze Reason: 1
Hallo,
Ich werds wohl besser über einen boolean definieren:
Initial wird boolean auf true gesetzt, neustart wird nur ausgeführt, wenn boolean==true und in der neustart void wird der boolean auf false gesetzt.
Somit dürfte sich sowohl der millis-Reset nach 50 Tagen sowie die 999-fache Ausführung der void erledigen.  

@Thorsten:
Kannst du mir genau sagen, wo du den Fehler siehst? (Oder hast du dir den Code aus Beitrag#1 angeschaut?)

if (hour<8 || hour>=18) {
....
 }
==> hier wird von 00 Uhr bis 7 Uhr und dann wieder von 18 Uhr bis 23 Uhr ausgeführt

 else if (hour>=8 && hour<18) {
....
 }
==> hier wird von 8 Uhr bis 17 Uhr auseführt

Gruß
Thorsten


MueThoS

Oh, sorry.
Da hab ich mich verguckt.
Ist OK so!

Go Up