Der Mikrocontroller auf der Ping-Pong-Platine [1] kann u. a. auch das Modell einer Fußgängerampel [2] ansteuern, wie dies im Bild dargestellt ist.
Die Leuchtdioden des Modells sind jeweils über Vorwiderstände an die Ausgänge der nachfolgenden Schaltung angeschlossen.
Die
Ausgänge des I2c-Ics PCF8574 steuern über Vorwiderstände fünf
Transistorstufen aus je einem Npn-Transistor und einem PPP-Transistor
an. Im Schaltplan ist der Übersichtlichkeit wegen nur eine dieser Stufen
dargestellt. Beide Transistoren invertieren das jeweilige
Eingangssignal. Am Ausgang von T2 stehen bei High-Pegel etwa 6 V für die
jeweilige Leuchtdiode des Ampelmodells an.
Hinweise zum Betrieb des
PCF8574 sind z. B. in den Datenblättern des Bausteins zu finden.
Außerdem wurde bereits in einem ELO-Beitrag zur Programmierung des
Attiny13 [3] in BASCOM AVR die Verwendung solcher Ics behandelt. Damit
für die Fußgänger deutlich ist, wann sie auf dem Bürgersteig an der
Ampel stehen bleiben sollen oder die Straße überqueren können, wird dies
neben der Ansteuerung der Leuchtdioden des Ampelmodells durch den
Mikrocontroller zusätzlich auf der Ping-Pong-Platine veranschaulicht.
Im Initialisierungsteil des Programmlistings in BASCOM AVR wird u. a. festgelegt, dass Portd.2 Eingang ist, und dass ein Interrupt bei fallender Flanke (Übergang von High-Pegel auf Low-Pegel) an Pin INT0/Portd.2 möglich ist.
...
Sub Initialisierung
...
Ddrd = &B11111010
...
Config Int0 = Falling 'Falling
Enable Int0
On Int0 Int_isr
...
Beim Interrupt INT0 wird das Bit Startb auf 1 gesetzt und anschließend eine erneute Auslösung verhindert.
Int_isr:
Startb = 1
Disable Int0
Return
..
Am Anfang des Programms wird u. a. nach der Festlegung der Variablen Dat und Startb bestimmt, dass für die Ansteuerung eines I2C-Ics Portb.6 mit Pin SDA und Portb.7 mit dem Anschluss SCL verbunden ist.
...
Dim Dat As Byte
Dim Startb As Bit
'Pin 15 = SDA
Config Sda = Portb.6
'Pin 14 = SCL
Config Scl = Portb.7
Nach der Initialisierung werden zunächst per Programm alle Portleitungen des I2C_Ics PCF8574 auf 0 gesetzt und danach für die Autos die grüne LED eingeschaltet und für die Fußgänger die rote. Ihnen wird außerdem mit den Leuchtdioden der Ping-Pong-Platine angezeigt, dass sie auf dem Bürgersteig stehen bleiben sollen.
Dat = 0
Gosub I2c_write
Startb = 0
Gosub Fug_hlt
Dat = 12
Gosub I2c_write
Anschließend wird per Programm ständig überprüft, ob das Bit Startb noch 0 ist, die Fußgänger also noch warten müssen.
Do
Beginn:
Enable Int0
If Startb = 0 Then
Gosub Fug_hlt
'Auto grün, Fußgänger rot
Dat = 12
Gosub I2c_write
Goto Beginn
End If
Download: 1003Ampel.zip