Eine Idee hätte ich, man könnte eine Art Fortschalteautomatik programmieren, wie bei einer Waschmaschine.
Man unterteilt die Programme in Programmschritte
Nach Ablauf einer Zeit wird in den nächsten Programmschritt weitergeschaltet, das Programm kehrt in die Hauptschleife zurück, wo es die Tasten abfragt und die Zeit überwacht.
Überlegt hab ich mir da was und habe mal ein Testprogramm gebastelt, ich habe es noch nicht ausgiebig getestet, es gibt bestimmt noch eine Dinge die man verbessern kann:
Code:
' --------------------------
'
' Projekt:
'Brunnensteuerung
' Beschreibung:
'Fortschalteautomatik
'byJ.A.
'---------------------------
' ---------- Definitionen ----------
'
'Ausgänge
define Pumpe1 port[1] 'ohne Pullup-Widerstand
define Pumpe2 port[2] 'ohne Pullup-Widerstand
'
'Eingänge
define Taster1 port[3] 'mit Pullup-Widerstand
define Taster2 port[4] 'mit Pullup-Widerstand
define Taster3 port[5] 'mit Pullup-Widerstand
define Taster4 port[6] 'mit Pullup-Widerstand
define desiredDelay byte 'Verzögerungszeit in Minuten
define selectedProgram byte 'Ausgewähltes Programm
define programStep byte 'Aktuellerprogrammschritt
define maxSteps byte 'Anzahl der Programmschritte des jeweiligen Programms
'
' ---------- Programmoperationen ----------
Pumpe1 = off
Pumpe2 = off
' Programmteil
#Main
if Taster1 = off then gosub initProgramm1
'if Taster2 = off then gosub initProgramm2
'if Taster3 = off then gosub initProgramm3
'if Taster4 = off then gosub initProgramm4
if ((minute => desiredDelay) and (selectedProgram >0)) then gosub nextStep 'Nach Ablauf der Verzögerungszeit wird einen Schritt weiter geschaltet
'Prüfen ob Programm gewählt wurde
goto main
' Unterprogramme
'---------Programm1-------------------------------
#initProgramm1
selectedProgram = 1 'Ausgewähltes Programm festlegen
programStep = 0 'Ausgangsposition festlegen
maxSteps = 2 'Anzahl der Programmschritte
minute = 0 'Systemzeit zurücksetzen
'läuft direkt weiter zum 1. Programmschritt
'Programmschritte:
#program1Step0
Pumpe2 = off 'Pumpenzustände einstellen
Pumpe1 = on
desiredDelay = 30 'gewünschte Zeit bis zum nächsten Schritt
return
#program1Step1
Pumpe2 = off 'Pumpenzustände einstellen
Pumpe1 = off
desiredDelay = 15 'gewünschte Zeit bis zum nächsten Schritt
return
'weitere Schritte möglich
'---------Programm2-------------------------------
'#initProgramm2
'....
'-------------------------------------------------
#nextStep
programStep = programStep + 1 'Programmschritt um 1 erhöhen
if programStep = maxSteps then programStep = 0 'Maximalschritt erreicht? Dann wieder von vorn
minute = 0
if selectedProgram = 1 then on programStep gosub program1Step0, program1Step1 'Gewähltes Programm abfragen dann Springen in den jeweiligen Programmschritt
'if selectedProgram = 2 then on programStep gosub program2Step0, program2Step1
'....
return
Vielleicht kann man das ja gebrauchen
Jörn Arne
Lesezeichen