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:
Vielleicht kann man das ja gebrauchenCode:' -------------------------- ' ' 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
Jörn Arne







Zitieren

Lesezeichen