Re: tägliche Ansteuerung Kategorie: Programmierung (von Rene - 26.12.2011 13:14) | |
Als Antwort auf Re: tägliche Ansteuerung von Rene - 23.12.2011 13:28
| |
Nochmal ich... also ich habe das jetzt geändert, die Sekunden werden aber immer noch nicht geschalten, ich vermute langsam das die C2 das garnicht hinbekommt. Gibt es eine Variante wie man das lösen könnte? Danke im voraus Gru� Rene > Hallo Jörg, > > danke für Deine Antwort und die Hilfe, ich werde es so > umschreiben wie Du empfiehlst. > > Zum Starten der threads: Starte diese in main, > jedoch vor dem loop. > > Wie meinst Du das genau, also was müsste ich �ndern? > > Gru� Rene > > > Hallo Rene, > > > > 3 Fehler fallen mir ins Auge (wobei Nr.1 dein eigentliches Problem ist): > > > > 1) time=system.hour()*10000 + system.minute()*100 + system.second(); > > Wenn du system.hour mal 100 nimmst, kommst Du nie über 8259 (2300+5900+59) hinaus. > > > > 2) Die Varibale sec wird verwendet, jedoch nie gesetzt: > > wait system.second() != sec; > > Was möchtest Du damit erreichen? 1 Sekunde Pause? > > Dann mache es so: > > wait system.second() != sec; > > sec = system.second(); > > > > > > 3) Bedingungen einklammern: > > if (time >= 220010 and time <= 222555) or (time >= 222905 and time <= 230148) > > Besser ist dass... > > > > Zu Deiner zweiten Frage: > > Wenn der thread dauerhaft läuft, sollte er auch seine tägliche Arbeit verrichten. > > Zum Starten der threads: Starte diese in main, jedoch vor dem loop. > > > > Gru� > > Jörg > > > > > Hallo Leute, > > > > > > ich habe zwei Probleme mit der Zeitsteuerung. > > > > > > Im unten stehenden Code soll ein Relais, zeitabhängig, geschaltet werden, > > > wenn ich die ausgeklammerte "Testzeit" nehme, dann geht es, nehme ich aber eine andere Zeit > > > geht es nicht mehr. > > > Was mache ich hier falsch? > > > > > > und zum zweiten... > > > > > > Wie muss ich den Code schreiben, damit das Programm jeden Tag abläuft und nicht nur > > > an einem Tag? > > > > > > Danke für Eure Hilfe ich verzweifel langsam :( > > > MfG Rene > > > > > > thread regen > > > { > > > byte port; > > > byte rel; > > > byte hour, min, sec; > > > int state; > > > int time; > > > > > > stports.init(); > > > lcdext.init(); > > > > > > /*******************************************/ > > > /******** ANSTEUERUNG LCD *************/ > > > /*******************************************/ > > > > > > lcdext.line(2); > > > lcdext.print(" TERRA: REGEN"); > > > sleep 500; > > > lcdext.clear(); > > > > > > /*******************************************/ > > > /*********** Zeitschaltuhr Regen ***********/ > > > /********Es wird jeden Tag geschaltet*******/ > > > /*******************************************/ > > > > > > loop > > > > > > { > > > min = system.minute(); > > > wait system.second() != sec; > > > time=system.hour()*100 + system.minute()*100 + system.second(); > > > > > > /**************************************************************/ > > > /******** Zeitdefinition Stunden Minuten Sekunden *************/ > > > /*** Ein 07:30:00 und 17:00:00 Aus 07:30:45 und 17:00:45 ******/ > > > /**************************************************************/ > > > //if time >= 000020 and time <= 000030 or time >= 000110 and time <= 000120 <- Testeinstellung > > > > > > if time >= 220010 and time <= 222555 or time >= 222905 and time <= 230148 > > > > > > stports.setRel(2,1); > > > else > > > stports.setRel(2,0); > > > }; > > > }; > > > > > > hier noch der Mainthread, falls gebraucht... > > > > > > thread main > > > > > > { > > > byte second; > > > int a, b, c; > > > int time; > > > long timeset; > > > stports.LCDlight(1); > > > lcdext.init(); > > > lcdext.clear(); > > > > > > lcdext.print("ZEIT EINSTELLUNG"); > > > lcdext.line(2); > > > lcdext.print("BITTE EINGEBEN"); > > > sleep 2000; > > > lcdext.clear(); > > > lcdext.print(" STUNDE "); > > > sleep 2000; > > > lcdext.clear(); > > > timeset=stkeyb.input (2, 2, 5000); > > > a=timeset; > > > lcdext.clear(); > > > lcdext.print(" MINUTEN "); > > > sleep 2000; > > > lcdext.clear(); > > > timeset=stkeyb.input (2, 2, 5000); > > > b=timeset; > > > c=00; > > > system.settime(a, b, c); > > > lcdext.clear(); > > > > > > lcdext.print("DATE EINSTELLUNG"); > > > lcdext.line(2); > > > lcdext.print("BITTE EINGEBEN"); > > > sleep 2000; > > > lcdext.clear(); > > > lcdext.print(" JAHR "); > > > sleep 2000; > > > lcdext.clear(); > > > timeset=stkeyb.input (4, 4, 5000); > > > a=timeset; > > > lcdext.clear(); > > > lcdext.print(" MONAT "); > > > sleep 2000; > > > lcdext.clear(); > > > timeset=stkeyb.input (2, 2, 5000); > > > b=timeset; > > > lcdext.clear(); > > > lcdext.print(" TAG "); > > > sleep 2000; > > > lcdext.clear(); > > > timeset=stkeyb.input (2, 2, 5000); > > > c=timeset; > > > lcdext.clear(); > > > system.setdate(a, b, c); > > > lcdext.clear(); > > > sleep 2000; > > > lcdext.print("DATE AND TIME"); > > > lcdext.line(2); > > > lcdext.print("ERFOLGREICH"); > > > sleep 2000; > > > lcdext.clear(); > > > > > > > > > loop > > > > > > { > > > second=system.second(); > > > lcdext.line(1); > > > lcdext.time(1); > > > lcdext.line(2); > > > lcdext.date(1); > > > sleep 500; > > > lcdext.goto(1,2); > > > lcdext.put(' '); > > > lcdext.goto(1,5); > > > lcdext.put(' '); > > > wait second!=system.second(); > > > > > > > > > { > > > run lichtsteuerung.licht; > > > run regensteuerung.regen; > > > } > > > } > > > } | |
Antwort schreiben Antworten: Re: tägliche Ansteuerung (von André H. - 3.01.2012 1:25) |