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-Schleife macht nichts anderes, als das Relais 1 ständig auf den Wert des Bits A.0 zu setzen.


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.



zurück

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.


zurück

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!                                                      

zurück

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 - wie bei der Kreuzschaltung. Man kann also mit dem einen Schalter das Relais einschalten und am anderen wieder ausschalten, oder umgekehrt oder am selben Schalter....