Programm „Timer.bas“:
'4 Kanal Schaltuhr Taster an dig1 (und +5V)
10 lcd1 : cls : locate 1,3 : print "Schaltuhr" : wait 20 'Titel auf LCD ausgeben
'Schaltzeiten:
100 let $0 = "06:10:00" 'Relais 1 Ein
105 let $1 = "18:48:00" 'Relais 1 Aus
110 let $2 = "99:99:99" 'Relais 2 Ein
115 let $3 = "99:99:99" 'Relais 2 Aus
120 let $4 = "99:99:99" 'Relais 3 Ein
125 let $5 = "99:99:99" 'Relais 3 Aus
130 let $6 = "99:99:99" 'Relais 4 Ein
135 let $7 = "99:99:99" 'Relais 4 Aus
190 do : locate 3,3 : print clock : wait 1 : loop until dig1 = 1' Uhrzeit / auf Taste an Dig1 warten
200 locate 1,13 : print "aktiv" : wait 20 : do 'Hauptschleife
205 if $0 = "99:99:99" then goto 215 'Einschaltzeit für Kanal 1 vorhanden?
210 if $0 = clock then set rel1 ': let $0 = "99:99:99" 'dann Relais 1 einschalten (evtl. Schaltzeit löschen)
215 if $1 = "99:99:99" then goto 225 'Ausschaltzeit Kanal1 vorhanden?
220 if $1 = clock then rset rel1 ': let $1 = "99:99:99" 'dann Relais1 ausschalten (evtl. Schaltzeit löschen)
225 if $2 = "99:99:99" then goto 235
230 if $2 = clock then set rel2
235 if $3 = "99:99:99" then goto 245
240 if $3 = clock then rset rel2
245 if $4 = "99:99:99" then goto 255
250 if $4 = clock then set rel3
255 if $5 = "99:99:99" then goto 265
260 if $5 = clock then rset rel3
265 if $6 = "99:99:99" then goto 275
270 if $6 = clock then set rel4
275 if $7 = "99:99:99" then goto 290
280 if $7 = clock then rset rel4
290 locate 3,3 : print clock 'Uhrzeit auf LCD anzeigen
300 loop until dig1 = 1 'Schleife bis Taster an Dig1 betätigt wird
310 goto 10 'dann von vorne
Eine kurze Besprechung:
Zeile 10:
Die Ausgabe wird auf das LCD umgeleitet und der Titel ausgedruckt. Danach ein wenig warten. (wait 20)
Zeile 100 -
Hier werden die Schaltzeiten angegeben. Sie sind in den Stringvariablen $0...$7 festgehalten. Sie werden nicht auf unsinnige Zeiten geprüft. 99:99:99 wurde als nicht-
Zeile 190:
Hier wird in einer do -
Zeile 200:
Der aktive Zustand wird durch Ausgabe von „aktiv“ auf dem LCD angezeigt. Nach kurzer Wartezeit wird mit do die Hauptschleife gestartet.
Zeile 205 -
Hier werden jetzt die gespeicherten Schaltzeiten laufend mit der aktuellen Uhrzeit verglichen z.B. if $0 = clock then set rel1 und bei Übereinstimmung das entsprechende Relais gesetzt oder resettet. Ist die gespeicherte Schaltzeit „99:99:99“ dann wird der Schaltvorgang übersprungen (z.B. goto 235). Soll die Schaltuhr eine Wochenschaltuhr sein, dann reicht der grüne Programmtext. Sollen die Schaltvorgänge nur einmalig sein, müssen die Schaltzeiten nach dem Schaltvorgang wieder gelöscht werden. z.B. let $0 = „99:99:99“. Ich habe diesen zusätzlichen Text mal mit in den Kommentar bei Zeile 210 und 220 gepackt. Wird er gebraucht, das Kommentarzeichen löschen und entsprechenden Text bei den anderen Zeiten hinzufügen.
Zeile 290:
Auch im Schaltmodus soll die aktuelle Uhrzeit angezeigt werden.
Zeile 300:
Auch die Hauptschleife, die hier zu Ende ist, kann durch Druck auf den Taster an dig1 abgebrochen werden. Dann geht es in Zeile 310 wieder zum Anfang des Programms.
Das Programm bietet viel Spielraum für Verbesserungen und Erweiterungen.
7. Beispiel
Eine 4-