Re: Fehlfunktion der Station? Kategorie: Verschiedenes (von Michael - 10.08.2004 1:34) | ||
Als Antwort auf Re: Fehlfunktion der Station? von André H. - 9.08.2004 9:01 | ||
| ||
Hallo André, erst einmal ganz herzlichen Dank für die Info (auch wenn ich gestehen mu�, da� ich nicht alles verstanden habe ;-) - zu den Details frage ich in einem späteren Posting noch einmal... Aber es kann sehr gut sein, da� ich gro�e induktive Lasten mit den Relais schalte: einmal ein elektronisches Vorschaltgerät für Leuchtstoffröhren, au�erdem eine Pumpe für eine Beregnungs- anlage sowie einen Ultraschallvernebler. Du hast mich gebeten, das Script zu posten. Hier kommt es: es ist sicher noch verbesserungsfähig... Die verwendete Funktion "wait_for_key" habe ich selbst geschrieben und im Modul "station.io" unter- gebracht: function wait_for_key() returns int { while keycode == 255 {keycode=getkey();} return keycode; } Hier das Hauptprogramm... Solltest Du Verbesserungsvorschläge haben, wie sich manche Sachen eleganter lösen lassen, so bin ich für jeden Tipp dankbar ;-) Herzliche Grü�e, Michael /************************* Klimasteuerung *************************/ type TIME { int hour; int minute; int second; } TIME licht_an, licht_aus; TIME nebel_an_1, nebel_aus_1; TIME nebel_an_2, nebel_aus_2; TIME nebel_an_3, nebel_aus_3; TIME regen_an_1, regen_aus_1; TIME regen_an_2, regen_aus_2; TIME regen_an_3, regen_aus_3; byte licht, nebel, regen; function set_time1() { system.settime(21, 38, 00); } function set_time2() { int key, digitcounter; int hour, minute, second; string s; digitcounter = -1; hour = 0; minute = 0; second = 0; station_lcd.clear(); station_lcd.home(); station_lcd.print("Set Time"); station_lcd.line2(); station_lcd.print("--:--:--"); key=station_io.wait_for_key(); while ((digitcounter < 6) or (key != 14)) { plm.beep(plm.TONE_C2); sleep 50; plm.beep(plm.TONE_OFF); s="--:--:--"; if key <= 9 { digitcounter = digitcounter + 1; if digitcounter <= 2 {hour = hour*10 + key; station_io.wait_for_release();} else if digitcounter <= 4 {minute = minute *10 + key; station_io.wait_for_release();} else if digitcounter <= 6 {second = second *10 + key; station_io.wait_for_release();} s = ""; if digitcounter == 1 {str.putint(s,hour); s = s + "-:--:--"; station_io.wait_for_release();} if digitcounter == 2 {str.putint(s,hour); s = s + ":--:--"; station_io.wait_for_release();} if digitcounter == 3 {str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + "-:--"; station_io.wait_for_release();} if digitcounter == 4 {str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + ":--"; station_io.wait_for_release();} if digitcounter == 5 {str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + ":"; str.putint(s,second); s = s + "-"; station_io.wait_for_release();} if digitcounter == 6 {str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + ":"; str.putint(s,second); station_io.wait_for_release();} } if key == 13 { digitcounter = digitcounter - 1; s = ""; if digitcounter == 1 {hour = hour / 10; str.putint(s,hour); s = s + "-:--:--"; station_io.wait_for_release();} if digitcounter == 2 {minute = 0; str.putint(s,hour); s = s + ":--:--"; station_io.wait_for_release();} if digitcounter == 3 {minute = minute / 10; str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + "-:--"; station_io.wait_for_release();} if digitcounter == 4 {second = 0; str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + ":--"; station_io.wait_for_release();} if digitcounter == 5 {second = second / 10; str.putint(s,hour) ; s = s + ":"; str.putint(s,minute); s = s + ":"; str.putint(s,second); s = s + "-"; station_io.wait_for_release();} } station_lcd.line2(); station_lcd.print(s); station_io.wait_for_release(); key = station_io.wait_for_key(); station_io.wait_for_release(); } system.settime(hour, minute, second); station_io.wait_for_release(); } function compare_time(TIME zeit1, TIME zeit2) returns byte { long sec1, sec2; sec1 = (zeit1.hour * 60 + zeit1.minute)*60 + zeit1.second; sec2 = (zeit2.hour * 60 + zeit2.minute)*60 + zeit2.second; if sec1 == sec2 {return 0;} if sec1 > sec2 {return 1;} if sec1 < sec2 {return 2;} } function Licht_an() { station_io.RELon(1); station_io.LEDon(6); licht = 1; } function Licht_aus() { station_io.RELoff(1); station_io.LEDoff(6); licht = 0; } function Nebel_an() { station_io.PORTset(3, 1); station_io.LEDon(7); nebel = 1; } function Nebel_aus() { station_io.PORTset(3, 0); station_io.LEDoff(7); nebel = 0; } function Regen_an() { station_io.PORTset(2, 1); station_io.LEDon(8); regen = 1; } function Regen_aus() { station_io.PORTset(2, 0); station_io.LEDoff(8); regen = 0; } //----------------------- thread Zeitsteuerung //----------------------- { run 5; TIME zeit; string uhrzeit, line2; int comp; do { zeit.second = system.second(); zeit.hour = system.hour(); zeit.minute = system.minute(); } while system.second() != zeit.second; uhrzeit = ""; str.putintf(uhrzeit, zeit.hour, 2); str.putstring(uhrzeit, ":"); str.putintf(uhrzeit, zeit.minute, 2); str.putstring(uhrzeit, ":"); str.putintf(uhrzeit, zeit.second, 2); station_lcd.line2(); station_lcd.print(uhrzeit); // licht an comp = compare_time(zeit, licht_an); if comp == 0 {Licht_an();} // licht aus comp = compare_time(zeit, licht_aus); if comp == 0 {Licht_aus();} // NEBEL // nebel an 1 comp = compare_time(zeit, nebel_an_1); if comp == 0 {Nebel_an();} // nebel aus 1 comp = compare_time(zeit, nebel_aus_1); if comp == 0 {Nebel_aus();} // nebel an 2 comp = compare_time(zeit, nebel_an_2); if comp == 0 {Nebel_an();} // nebel aus 2 comp = compare_time(zeit, nebel_aus_2); if comp == 0 {Nebel_aus();} // nebel an 3 comp = compare_time(zeit, nebel_an_3); if comp == 0 {Nebel_an();} // nebel aus 3 comp = compare_time(zeit, nebel_aus_3); if comp == 0 {Nebel_aus();} // REGEN // regen an 1 comp = compare_time(zeit, regen_an_1); if comp == 0 {Regen_an();} // regen aus 1 comp = compare_time(zeit, regen_aus_1); if comp == 0 {Regen_aus();} // regen an 2 comp = compare_time(zeit, regen_an_2); if comp == 0 {Regen_an();} // regen aus 2 comp = compare_time(zeit, regen_aus_2); if comp == 0 {Regen_aus();} // regen an 3 comp = compare_time(zeit, regen_an_3); if comp == 0 {Regen_an();} // regen aus 3 comp = compare_time(zeit, regen_aus_3); if comp == 0 {Regen_aus();} } //------------ thread main //------------ { int key; station_lcd.init(); station_lcd.clear(); station_io.Clear(); station_lcd.home(); station_lcd.print("Function Mode"); // setze variablen für Lichtsteuerung licht_an.hour = 08; licht_an.minute = 00; licht_an.second = 00; licht_aus.hour = 20; licht_aus.minute = 00; licht_aus.second = 00; licht = 0; // setze variablen für Regensteuerung regen_an_1.hour = 07; regen_an_1.minute = 00; regen_an_1.second = 00; regen_aus_1.hour = 07; regen_aus_1.minute = 01; regen_aus_1.second = 00; regen_an_2.hour = 14; regen_an_2.minute = 00; regen_an_2.second = 00; regen_aus_2.hour = 14; regen_aus_2.minute = 01; regen_aus_2.second = 00; regen_an_3.hour = 19; regen_an_3.minute = 00; regen_an_3.second = 00; regen_aus_3.hour = 19; regen_aus_3.minute = 01; regen_aus_3.second = 00; regen = 0; // setze variablen für Nebelsteuerung nebel_an_1.hour = 07; nebel_an_1.minute = 00; nebel_an_1.second = 00; nebel_aus_1.hour = 09; nebel_aus_1.minute = 00; nebel_aus_1.second = 00; nebel_an_2.hour = 14; nebel_an_2.minute = 00; nebel_an_2.second = 00; nebel_aus_2.hour = 15; nebel_aus_2.minute = 00; nebel_aus_2.second = 00; nebel_an_3.hour = 19; nebel_an_3.minute = 00; nebel_an_3.second = 00; nebel_aus_3.hour = 21; nebel_aus_3.minute = 00; nebel_aus_3.second = 00; nebel = 0; set_time2(); run Zeitsteuerung; station_lcd.clear(); station_lcd.home(); station_lcd.print("Function Mode"); loop { key = station_io.getkey(); while key == 255 {key = station_io.getkey();} plm.beep(plm.TONE_C2); sleep 50; plm.beep(plm.TONE_OFF); if key == 10 // licht { if licht == 1 {Licht_aus();} else {Licht_an();} } if key == 11 // nebel { if nebel == 1 {Nebel_aus();} else {Nebel_an();} } if key == 12 // regen { if regen == 1 {Regen_aus();} else {Regen_an();} } station_io.wait_for_release(); } } | ||
Antwort schreiben Antworten: Re: Fehlfunktion der Station? (von André H. - 10.08.2004 10:42) Re: Fehlfunktion der Station? (von Michael - 10.08.2004 14:56) |