Ok,
langam han ich für heut genug. Wieder nur Probleme:
1. Wenn ich F1 ein paar mal hintereinander betätige (nur im Basic-Editor),
passiert es zwischenzeitlich (1v5 mal) das er die routiene für F2 startet (nein! ich bin nicht zu dumm zum klicken!!!)
2. Wenn ich das Prog auf die Station lade, F1 drücke (für Shutdown) beendet sich das Prog (wie ja auch gewollt), nur das, wenn ich sie wieder anmache er immer wierder shutdown2 aufruft (also quasi "end")
hier main Code:Code:' --- Definitionen --- ' Die Digital-Ports für das öffnen der Tür ' und der Lüfterregelungund im Bad define DP1 port[1] define DP2 port[2] define DP3 port[3] define DP4 port[4] ' Die Relais define K1 port[7] define K2 port[8] ' Die Folien-Funktionstasten define F1 port[9] define F2 port[10] ' Die LED`S für die Zustandsanzeige und ' die Tastendruck-Bestätigung define LED1 port[13] define LED2 port[14] define LED3 port[15] define LED4 port[16] ' Die Analogports für die Überwachung ' der Tür und der Luftfeuchtigkeit im Bad define AP1 ad[1] define AP2 ad[2] ' Die Temperatursensor-Ports define TS1 ad[5] define TS2 ad[6] ' Zwei Variablen zur Speicherung der Temperatur define temp word[1] define temp2 word[2] ' Variable für die Speicherung empfangener ' Daten und zum counten der Shutdown-Schleife define Data byte[5] define ShutCnt byte[6] ' Variablen zum counten der Temperaturschaltung define v_IntCoolOn bit[49] define v_IntCoolOff bit[50] define v_ExHeatOn bit[51] define v_ExHeatOff bit[52] ' symbolische Konstanten für die Schaltschwellwerte ' (zehnfache Temperaturwerte) define IntCool 220 ' = 24.0 °C define ExHeat 250 ' = 20.0 °C define Dong 155 ' = 1,55 V ' --- das Programm --- ' Initialisierung DP1 = 0 DP2 = 0 DP3 = 0 DP4 = 0 K1 = OFF K2 = OFF LED1 = OFF LED2 = OFF LED3 = OFF LED4 = OFF ShutCnt = 0 v_IntCoolOn = 0 v_IntCoolOff = 0 v_ExHeatOn = 0 v_ExHeatOff = 0 #Main ' AD-Wandlerwert in Temperatur umrechnen temp = 5 * TS1 - 250 '(5 * T1 - 250) /10 temp2 = 5 * TS2 - 250 '(5 * T2 - 250) /10 ' Datenkontainer leeren Data = 0 ' Abfragen if temp => IntCool then gosub IntCoolOn Else gosub IntCoolOff if temp2 =< ExHeat then gosub ExHeatOn Else gosub ExHeatOff if AP1 => Dong then gosub Klingeln if not F1 then gosub F1Push if not F2 then gosub F2Push goto Main #IntCoolOn If v_IntCoolOn = -1 then Return v_IntCoolOn = v_IntCoolOn -1 v_IntCoolOff = 0 Print "1" Pause 10 K1 = ON LED3 = ON return #IntCoolOff If v_IntCoolOff = -1 then Return v_IntCoolOff = v_IntCoolOff -1 v_IntCoolOn = 0 Print "2" Pause 10 K1 = OFF LED3 = OFF return #ExHeatOn If v_ExHeatOn = -1 then Return v_ExHeatOn = v_ExHeatOn - 1 v_ExHeatOff = 0 Print "3" K2 = ON LED4 = ON return #ExHeatOff If v_ExHeatOff = -1 then Return v_ExHeatOff = v_ExHeatOff - 1 v_ExHeatOn = 0 Print "4" K2 = OFF LED4 = OFF return #F1Push LED1 = ON Beep 568,5,0 Wait F1 Print "101" Pause 25 LED1 = OFF if not RXD then Print "101" Else gosub RxData gosub Shutdown1 #F2Push LED2 = ON Beep 568,5,0 Wait F2 Pause 10 if v_IntCoolOn = -1 then Print "1" Else Print "2" gosub SendTemp1 pause 10 if v_ExHeatOn = -1 then Print "3" Else Print "4" gosub SendTemp2 LED2 = OFF return #Shutdown1 Beep 480,15,10 ShutCnt = ShutCnt + 1 if ShutCnt = 4 then gosub Shutdown2 if not RXD then Print "101" Else gosub RxData gosub Shutdown1 #Shutdown2 Beep 568,10,2 Beep 568,10,2 Beep 568,10,2 Beep 480,15,0 end #RxData Input Data if Data = 101 then gosub Shutdown2 if Data = 112 then gosub SendTemp1 if Data = 123 then gosub SendTemp2 if Data = 202 then gosub DoorOpen1 if Data = 213 then gosub DoorOpen2 if Data =< 100 then goto Main Data = 0 return #SendTemp1 print "Temperatur an T1 = "; temp; "°C"; print tog LED3 pause 10 tog LED3 pause 10 tog LED3 pause 10 tog LED3 return #SendTemp2 print "Temperatur an T2 = "; temp2; "°C"; print tog LED4 pause 10 tog LED4 pause 10 tog LED4 pause 10 tog LED4 return #Klingeln Print "DingDong" Pause 5 Print "DingDong" return #DoorOpen1 LED3 = ON Beep 568,5,0 LED3 = OFF return #DoorOpen2 LED3 = ON Beep 568,5,0 LED3 = OFF return







Zitieren

Lesezeichen