define
Light port[16]define
Taste ad[8]define
Solar ad[2] 'Messeingang für die PanelspannungDefine
SolarV as byte 'Rechenvariable für Panelspannungdefine
Ladung port[8] 'Schaltausgang für Ladung an/ausDefine
Akku ad[1] 'Messeingang für die AkkuspannungDefine
AkkuV as byte 'Rechenvariable für AkkuspannungDefine
statakku port[5] 'Schaltausgang für LED Akku-ok und -vollDefine
statladung port[4] 'Schaltausgang für LED Ladevorgang an/ausDefine
statsolar port[3] 'Schaltausgang für LED Ladespannung erreichtDefine
Speichermerker as bit 'Merker, damit Ladestromaufzeichnung nich mehrfach durchloffen wirdDefine
TSpeichermerker as bit'Merker, damit Temperatursummierung nicht mehrfach durchloffen wirdDefine
mLeistung as bit 'Merker, um Leistungsdaten permanent anzuzeigenDefine
Lsumme as word 'Variable zum Addieren des LadestromsDefine
Tsumme as word 'Variable zum Addieren der TemperaturDefine
Temp ad[3]Define
Fenstera port[7]Define
Fensterz port[6]Define
Fenster as bit 'Merker um Fensterzustand auf / zu zu speichernDefine
SFenster port[2] 'Port für Endschalter bei geschlossenem FensterDefine
mfenstera as bit 'Merker manuelle Fenstersteuerung öffnenDefine
mfensterz as bit 'Merker manuelle Fernstersteuerung schliessenDefine
Fensternacht as bit 'Merker für Nachtschaltung FensterDefine
Giesmerker as byte 'Zählariable damit bei Nichtgiessen Tage gezählt werdenDefine
Wasser port[1] 'Schaltausgang für Wasser an
config
.initconfig
.put 00001000bconfig
.off
Function
Hochfahren()Light=
offlcd
.initlcd
.clearlcd
.pos 1,1lcd
.print "Servus Andy"lcd
.pos 2,1lcd
.Print "Auf gehts"pause
50beep
20,5,2beep
15,5,2beep
10,5,2'light=on
End
function'Ende der Startroutine
'-----------------------------------------------
Hochfahren ()
'-----------------------------------------------
hour
= 11 'Manuelles Uhrzeit-Setzenminute
=0second
=0'-----------------------------------------------
#Start
Select
Case Taste Case 163 beep 20,2,20Speicher()
'Menüauswahl 9 gedrückt, Freien Speicher anzeigen Case 66 beep 20,2,20mLeistung =
on '3 gedrückt, Leistungsanzeige auf LCD Case 181 beep 20,2,20 'clr gedrückt, zurück zur StandardanzeigemLeistung =
offHochfahren()
Case 98 '5 gedrückt, Fenster manuell auf beep 20,2,20mFenstera=
onFensterauf()
Case 114 '6 gedrückt, Fenster manuell zu beep 20,2,20mFensterz=
onFensterzu()
Case 130 '7 Gedrückt Fensterautomatik einschalten beep 20,2,20mFenstera=
offmFensterz=
off Case 218 'F1 gedrückt = LCD licht auslight=
on beep 20,2,20 Case 236light=
off 'F2 gedrückt = LCD licht an Case 147 beep 20,2,20Tanzeige()
'Für Testzwecke anzeige der TempsummeEnd
Select'Ende Auswahlmenü
'------------------------------------------------------------------------------------------
if
mLeistung = on then Leistung()if
hour >=20 and hour <=10 then 'Von 20:00 Uhr bis 10:00 Uhr Fenster immer geschlossen halten if Fenster=on then if mFenstera=off thenFensternacht=
onFensterzu()
else Fensternacht=off end if end ifend
ifif
temp > 135 then 'Wert 122 bei Raumtemperatur if Fenster=off then 'Prüfen, ob Fenstermerker nicht schon auf "offen" steht if mFenstera=off then 'Prüfen, ob Fenster nicht manuell aufgemacht wurde if Fensternacht = off then 'Prüfen, ob Nachtschaltung Fenster aktiv istFensterauf()
end if end if end ifend
if
if
temp < 125 then 'Wert 122 bei Raumtemperatur if Fenster=on then 'Prüfen, ob Fenstermerker nicht schon auf "zu" steht if mfensterz=off then 'Prüfen, ob Fenster nicht manuell zugemacht wurde if Fensternacht=off then 'Prüfen, ob Nachtschaltung Fenster aktiv istFensterzu()
end if end if end ifend
if'if minute=31 then Speichermerker=off
'if (hour>=8) and (hour<=20) then
' if minute = 30 then
' if Speichermerker= off then Ladestrom()
'end if
'end if
if
minute=33 then TSpeichermerker=offif
(hour>=8) and (hour<=20) then if minute = 32 then if TSpeichermerker=off then Temperatur() end if end if
if
Solar < 110 then statsolar=off '110 entspricht 12Vif
Solar > 110 then statsolar=on '110 entspricht 12Vif
Akku > 160 then statakku=on else statakku=off '160 entspricht knapp über 12.5Vif
Akku < 158 then Aufladen() '158 = 12.5Vif
Akku > 177 then Ladung=off '177 = 14.0V
Function
Aufladen()statladung=
onLadung =
onend
function
Function
Ladestrom() 'Aufzeichung des Ladestromsbeep
300,50,0lcd
.clearlcd
.pos 1,1lcd
.print "Messung..."LSumme=LSumme+Solar
if
hour=20 thenLSumme=LSumme/13
open# for append if filefree<10 then lcd.pos 2,1 lcd.print "k.Speicher " beep 200,100,0 exit function end if print# day print# month print# LSumme close# pause 100 lcd.clearLsumme=0
end ifSpeichermerker=
onend
functionFunction
Temperatur() 'Auswertung der Temperaturbeep
300,50,0lcd
.clearlcd
.pos 1,1lcd
.print "Messung..."TSumme=TSumme+Temp
if
hour=20 thenTSumme=TSumme/13
' if TSumme>1000 then
Tsumme=0
' end if
end if
TSpeichermerker=
onpause
100lcd
.clearend
functionFunction
Tanzeige()lcd
.clearlcd
.pos 1,1lcd
.print "Tempsumme:"lcd
.pos 2,1lcd
.print Tsummepause
100end
function
Function
Menue8(Data as Byte) 'Menüauswahl 8 getroffen---Speicher der Solarpanelaufzeichnung auslesenopen
# for readlcd
.cleardo
input
# datalcd
.pos 1,1lcd
.print Data & " "pause
50loop
until eofclose
#end
function
Function
Speicher() 'Menüauswahl 9 getroffenlcd
.clearLCD
.POS 2,1LCD
.PRINT "No Frei:"lcd
.pos 2,10LCD
.PRINT FILEFREEpause
100END
FUNCTIONFunction
Leistung() 'Leistungsdaten am LCD anzeigen'Solarv=Solar/256*100 'Wertumrechnung in Prozent
'Akkuv=Akku/256*100 'Wertumrechnung in Prozent
LCD
.clearlcd
.pos 1,1lcd
.print "S:"&Solarlcd
.pos 1,7lcd
.print "A:"&Akkulcd
.pos 2,1lcd
.print "T:"&Templcd
.pos 2,7lcd
.print "S:"&SFensterEnd
FunctionFunction
Fensterauf()Fenster=
on 'Merker für If-Schleife bei Fensterautomatikif
SFenster=on then 'Fensterendschalter prüfen lcd.clear lcd.pos 1,1 lcd.print "Fensterfehler" beep 100,100,10 exit function end iflcd
.clearlcd
.pos 1,1lcd
.print "Fenster auf"Fenstera=
on 'Motor einschaltenpause
100Fenstera=
off 'Motor ausschaltenEnd
functionFunction
Fensterzu()Fenster=
off 'Merker für if-Schleife bei Fensterautomatikif
SFenster=off then 'Fensterendschalter prüfen. lcd.clear lcd.pos 1,1 lcd.print "Fensterfehler" beep 100,10,3 exit function end ifFensterz=
onlcd
.clearlcd
.pos 1,1lcd
.print "Fenster zu"pause
100 'Nur solange der Endschalteru nicht angeschlossen ist für TestzweckeFensterz=
off'Do
'Loop until sFenster=off 'Variablenstand bei offenen Kontakt noch prüfen
End
Function
pause
20goto
StartEnd