4. Beispiel
Grundschaltungen mit Tastern und Schaltern
Programm „Impuls.bas“:
'Stromstoßschalter
'-
'Taster an dig1 und Plus 5V, dig1 mit 10KOhm an Masse verbinden
'Es können mehrere Taster parallel geschaltet werden
10 on dig1,1 gosub 100
20 do : let rel1 = A.0 : loop
100 inc A : return
Schaltbild mit 2 Tastern:
auf dem Controllerboard ist der 10K Widerstand schon vorhanden
Eine kurze Besprechung:
Zeile 10:
Natürlich braucht man für diese einfache Schaltung keinen Controller mit kompletten Basic. Es soll die Verwendung der Instruktion on gezeigt werden. Mit on dig1,1 wird das Ereignis definiert, bei dem zum Unterprogramm in Zeile 100 gesprungen wird, sobald es auftritt. Das Ereignis „dig1,1“ bedeutet: am Digitaleigang 1 tritt ein Spannungswechsel von 0 Volt nach Plus 5 Volt auf (Bei Verwendung eines Spannungsteilers am Eingang dig1 auch andere Spannungswerte). Dieser Spannungssprung wird durch Betätigen von Schalter 1 oder 2 erzeugt. Es können auch wesentlich mehr Taster angeschlossen werden.
Zeile 20:
Zum Speichern des Tastendrucks wird die Variable A herangezogen. Uns interessiert nur das niederwertigste Bit von A. So wie dieses Bit A.0 wird sich auch Relais1 verhalten: let rel1 = A.0. Die do...loop-
Zeile 100:
Hier kommt etwas Action ins Spiel: Wenn der Spannungspegel an dig1 von low auf high springt (bei jedem Tastendruck) wird hier die Variable inkrementiert inc A also um 1 erhöht. Das bewirkt, dass A abwechselnd gerade und ungerade Werte annimmt und das Bit 0 von A deshalb abwechselnd die Werte 0 und 1 annimmt. Ist A.0 = 0 wird auch Relais 1 in Zeile 20 ausgeschaltet, ist A.0 = 1 wird es eingeschaltet.
Programm „Treppe.bas“:
'Treppenhauslicht
'-
'Taster an dig1 und Plus 5V, dig1 mit 10KOhm an Masse verbinden
'Es können mehrere Taster parallel geschaltet werden
10 let pulse = 1800 : on dig1,1 gosub 100
20 do : loop
100 imp rel1 : return
'Wer den Taster lieber nach Minus schalten lassen will (dig1 mit 10K an Plus)
'ändert die Zeile 10 ab:
10 let pulse = 1800 : on dig1,0 gosub 100
Es kommt dieselbe Schaltung wie oben zum Einsatz.
Eine kurze Besprechung:
Zeile 10:
Hier wird mit let pulse = 1800 die Zeitdauer der imp Anweisung definiert. Sonst wie oben.
Zeile 20:
Die Schleife macht hier gar nichts. Das heisst, das Hauptprogramm wartet nur.
Zeile 100:
Hier wird die Warteschleife unterbrochen, weil jemand einen der Taster gedrückt hat. Das Relais 1 wird für die Dauer von pulse eingeschaltet (1800 Zentelsekunden = 3 Minuten), anschliessend wird in die Warteschleife mit return zurückgekehrt.
Programm „Kreuz.bas“:
'Kreuzschaltung mit 2 Schaltern
10 do : let rel1 = dig1 xor dig2 : loop
Schaltbild mit 2 Tastern:
auf dem Controllerboard sind die 10K Widerstände bereits vorhanden.
S1 und S2 sind Schalter!
Eine kurze Besprechung:
Zeile 10:
Das gesamte Programm besteht nur aus dieser Endlosschleife. Der Zustand der beiden Digitaleingänge dig1 und dig2 wird mit xor logisch verknüpft und das Ergebnis dem Relais 1 zugewiesen. Ist die Verknüpfung wahr (1) ist das Relais eingeschaltet. Die xor Verknüpfung ist wahr, wenn dig1 und dig2 verschiedene Zustände haben -