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 ! > Okay hier der code... bestehend aus 3 Modulen, zunächste das mainmodule: > byte min, tim; > int button; > > > thread eins > { > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 10 > { > halt zeitschaltuhr.relaiseins; > stports.togRel(1); > min= system.hour(); > wait min == system.hour()+1; > resume zeitschaltuhr.relaiseins; > } > } > thread zwei > { > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 11 > { > halt zeitschaltuhr.relaiszwei; > stports.togRel(2); > tim= system.minute(); > wait tim == system.minute()+10; > resume zeitschaltuhr.relaiszwei; > } > } > > > thread drei > { > min=system.second(); > button=stkeyb.get(); //function input(byte maxziff, long default, long timeout) returns long > if button == 12 > { > stports.togLCDlight(); > sleep 300; > } > } > > > thread main > > { > stports.LCDlight(1); > byte knopf, temp; > int a, b, c; > long timeset; > 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 NUMMER "); > 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(); > > run zeit_anzeige.Zeit; > run zeitschaltuhr.Zeitschaltuhr; > run zeitschaltuhr.relaiseins; > run zeitschaltuhr.relaiszwei; > run eins; > run zwei; > run drei; > halt; > } > > > dann zweites das Zeit anzeige Modul: > thread Zeit > {byte second; > stports.init(); > lcdext.init(); > > lcdext.print(" AQUARIUM "); > lcdext.line(2); > lcdext.print(" STEUERUNG "); > sleep 1000; > 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();//Auf Sekundenwechsel warten > } > } > > und zu guterletzt, das Zeitschaltuhr Modul: > > byte ZSU[1], ZSSU[1], flag; // Anzahl der Zeitschaltuhren beginnend mit '0' !!! > thread Zeitschaltuhr > { > byte min, day, Nr, No; > int time; > > min = system.minute(); > wait system.minute() != min; > time=system.hour()*100 + system.minute(); > day=system.dow(); > > capture flag; > > //-------------------- Zeitschaltuhr (ZSU) 0 -------------------- > > Nr = 0; // Zeitschaltuhr (ZSU) Nr. > > // Es wird jeden Tag geschaltet > > if time >= 700 and time < 1200 > or time >= 1500 and time < 2145 // zwischen 6:00 und 22:00 > //or time>= 1328 and time < 1329 > > > ZSU[Nr] = 1; // EIN > else > ZSU[Nr] = 0; // AUS > > //-------------------- Zeitschaltuhr (ZSU) 0 Ende -------------------- > > > > //-------------------- Zeitschaltuhr (ZSU) 1 -------------------- > > No = 0; // Zeitschaltuhr (ZSU) Nr. > > // Es wird jeden Tag geschaltet > > if time >= 700 and time < 745 > or time>= 830 and time < 1000 // zwischen 6:00 und 22:00 > or time>= 1200 and time < 1330 > or time>= 1430 and time < 1530 > or time>= 1830 and time < 1945 > or time>= 2030 and time < 2130 > > > ZSSU[No] = 1; // EIN > else > ZSSU[No] = 0; // AUS > release; > } > //-------------------- Zeitschaltuhr (ZSU) 1 Ende -------------------- > > thread relaiseins > { > capture flag; > if ZSU[0] == 1 // WENN Zeitschaltuhr '0' EIN > { > stports.setRel (1,1); //anschalten Relais 0 > } > else > { > stports.setRel (1,0); //auschschalten Relais 0 > } > release; > } > thread relaiszwei > { > capture flag; > if ZSSU[0] == 1 // WENN Zeitschaltuhr '1' EIN > { > stports.setRel (2,1); //anschalten Relais 1 > } > else > { > stports.setRel (2,0); //auschschalten Relais 1 > } > release; > } > > > > Bei dem hats auch schon zu problemen geführt, wenn ich mit einem Array > arbeite und (beispielsweise ZSU[1]) damit schalten will, dann geht das > irgendwie nicht... > > Hoffe der Code hilft euch... > BTW: die Funktionen zur manuellen Bedienung funktionieren, > aber danach spinnt das ganze System und die Steuerung macht irgenwie was > sie will... > > Liebe Grüße > > Karl > > > > > > > > > > > Hallo Karl, > > einen Stackoverflow hatte ich noch nicht, aber wie schaut denn dein Programm aus? > > Vieleicht stellst du es einfach mal hir ein... > > > > nitraM > > > > > > > > > > > Hallo an alle, > > > > > > wollte mal fragen ob auch andere schon mit dem Stack overflow zu kämpfen hatten. Habe bei meinen > > > Programmen wenn ich sie testweise ausführe schon öfters einen Stackoverflow bekommen. > > > Je öfter ich dann das Programm simulieren will desto höher ist die ebene die angezeigt wird, > > > also z.B. Stack overflow (ebene 1). > > > Habe das gefühl, dass das sehr zufällig und sporadisch auftaucht. Finde nämlich nicht, dass mein > > > Programm da jetzt zu groß ist. Schalte im Prinzip nur relais zeitgesteuert, dann habe ich display > > > ansteuerung vom licht und eine manuelle schaltmöglichkeit(die aber noch nicht so wirklich > > > klappt). > > > Hatte das hier schonmal jemand? > > > > > > Grüße > > > > > > Karl