define Light port[16]

define Taste ad[8]

define Solar ad[2] 'Messeingang für die Panelspannung

Define SolarV as byte 'Rechenvariable für Panelspannung

define Ladung port[8] 'Schaltausgang für Ladung an/aus

Define Akku ad[1] 'Messeingang für die Akkuspannung

Define AkkuV as byte 'Rechenvariable für Akkuspannung

Define statakku port[5] 'Schaltausgang für LED Akku-ok und -voll

Define statladung port[4] 'Schaltausgang für LED Ladevorgang an/aus

Define statsolar port[3] 'Schaltausgang für LED Ladespannung erreicht

Define Speichermerker as bit 'Merker, damit Ladestromaufzeichnung nich mehrfach durchloffen wird

Define TSpeichermerker as bit'Merker, damit Temperatursummierung nicht mehrfach durchloffen wird

Define mLeistung as bit 'Merker, um Leistungsdaten permanent anzuzeigen

Define Lsumme as word 'Variable zum Addieren des Ladestroms

Define Tsumme as word 'Variable zum Addieren der Temperatur

Define Temp ad[3]

Define Fenstera port[7]

Define Fensterz port[6]

Define Fenster as bit 'Merker um Fensterzustand auf / zu zu speichern

Define SFenster port[2] 'Port für Endschalter bei geschlossenem Fenster

Define mfenstera as bit 'Merker manuelle Fenstersteuerung öffnen

Define mfensterz as bit 'Merker manuelle Fernstersteuerung schliessen

Define Fensternacht as bit 'Merker für Nachtschaltung Fenster

Define Giesmerker as byte 'Zählariable damit bei Nichtgiessen Tage gezählt werden

Define Wasser port[1] 'Schaltausgang für Wasser an

 

config.init

config.put 00001000b

config.off

 

Function Hochfahren()

Light=off

lcd.init

lcd.clear

lcd.pos 1,1

lcd.print "Servus Andy"

lcd.pos 2,1

lcd.Print "Auf gehts"

pause 50

beep 20,5,2

beep 15,5,2

beep 10,5,2

'light=on

End function

'Ende der Startroutine

'-----------------------------------------------

Hochfahren ()

'-----------------------------------------------

hour = 11 'Manuelles Uhrzeit-Setzen

minute=0

second=0

'-----------------------------------------------

#Start

Select Case Taste

Case 163

beep 20,2,20

Speicher() 'Menüauswahl 9 gedrückt, Freien Speicher anzeigen

Case 66

beep 20,2,20

mLeistung = on '3 gedrückt, Leistungsanzeige auf LCD

Case 181

beep 20,2,20 'clr gedrückt, zurück zur Standardanzeige

mLeistung = off

Hochfahren()

Case 98 '5 gedrückt, Fenster manuell auf

beep 20,2,20

mFenstera=on

Fensterauf()

Case 114 '6 gedrückt, Fenster manuell zu

beep 20,2,20

mFensterz=on

Fensterzu()

Case 130 '7 Gedrückt Fensterautomatik einschalten

beep 20,2,20

mFenstera=off

mFensterz=off

Case 218 'F1 gedrückt = LCD licht aus

light=on

beep 20,2,20

Case 236

light=off 'F2 gedrückt = LCD licht an

Case 147

beep 20,2,20

Tanzeige() 'Für Testzwecke anzeige der Tempsumme

End 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 then

Fensternacht=on

Fensterzu()

else Fensternacht=off

end if

end if

end if

if 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 ist

Fensterauf()

end if

end if

end if

end 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 ist

Fensterzu()

end if

end if

end if

end 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=off

if (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 12V

if Solar > 110 then statsolar=on '110 entspricht 12V

if Akku > 160 then statakku=on else statakku=off '160 entspricht knapp über 12.5V

if Akku < 158 then Aufladen() '158 = 12.5V

if Akku > 177 then Ladung=off '177 = 14.0V

 

Function Aufladen()

statladung=on

Ladung = on

end function

 

Function Ladestrom() 'Aufzeichung des Ladestroms

beep 300,50,0

lcd.clear

lcd.pos 1,1

lcd.print "Messung..."

LSumme=LSumme+Solar

if hour=20 then

LSumme=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.clear

Lsumme=0

end if

Speichermerker=on

end function

Function Temperatur() 'Auswertung der Temperatur

beep 300,50,0

lcd.clear

lcd.pos 1,1

lcd.print "Messung..."

TSumme=TSumme+Temp

if hour=20 then

TSumme=TSumme/13

' if TSumme>1000 then

Tsumme=0

' end if

end if

 

TSpeichermerker=on

pause 100

lcd.clear

end function

Function Tanzeige()

lcd.clear

lcd.pos 1,1

lcd.print "Tempsumme:"

lcd.pos 2,1

lcd.print Tsumme

pause 100

end function

 

 

Function Menue8(Data as Byte) 'Menüauswahl 8 getroffen---Speicher der Solarpanelaufzeichnung auslesen

open# for read

lcd.clear

do

input# data

lcd.pos 1,1

lcd.print Data & " "

pause 50

loop until eof

close#

end function

 

Function Speicher() 'Menüauswahl 9 getroffen

lcd.clear

LCD.POS 2,1

LCD.PRINT "No Frei:"

lcd.pos 2,10

LCD.PRINT FILEFREE

pause 100

END FUNCTION

Function Leistung() 'Leistungsdaten am LCD anzeigen

'Solarv=Solar/256*100 'Wertumrechnung in Prozent

'Akkuv=Akku/256*100 'Wertumrechnung in Prozent

LCD.clear

lcd.pos 1,1

lcd.print "S:"&Solar

lcd.pos 1,7

lcd.print "A:"&Akku

lcd.pos 2,1

lcd.print "T:"&Temp

lcd.pos 2,7

lcd.print "S:"&SFenster

End Function

Function Fensterauf()

Fenster=on 'Merker für If-Schleife bei Fensterautomatik

if SFenster=on then 'Fensterendschalter prüfen

lcd.clear

lcd.pos 1,1

lcd.print "Fensterfehler"

beep 100,100,10

exit function

end if

lcd.clear

lcd.pos 1,1

lcd.print "Fenster auf"

Fenstera=on 'Motor einschalten

pause 100

Fenstera=off 'Motor ausschalten

End function

Function Fensterzu()

Fenster=off 'Merker für if-Schleife bei Fensterautomatik

if SFenster=off then 'Fensterendschalter prüfen.

lcd.clear

lcd.pos 1,1

lcd.print "Fensterfehler"

beep 100,10,3

exit function

end if

Fensterz=on

lcd.clear

lcd.pos 1,1

lcd.print "Fenster zu"

pause 100 'Nur solange der Endschalteru nicht angeschlossen ist für Testzwecke

Fensterz=off

'Do

'Loop until sFenster=off 'Variablenstand bei offenen Kontakt noch prüfen

End Function

 

pause 20

goto Start

End