Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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(); > } > }