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
Die dargestellte Schaltung mit R1, C1 sowie den beiden Schmitt-Triggerstufen eines CD4093 sorgt für eine einwandfreie, sichere Funktion. Die beiden Taster des Ampelmodells sind zu dem Prüftaster auf dem Steckboard parallel geschaltet.
Wird das Bit Startb 1, laufen die einzelnen Ampelphasen ab.
If Startb = 1 Then
Disable Int0
Wait 3
'Auto gelb, Fußgänger rot
Dat = 10
Gosub I2c_write
Wait 3
'Auto rot, Fußgänger rot
Dat = 9
Gosub I2c_write
Wait 3
'Auto rot, Fußgänger grün
Dat = 17
Gosub I2c_write
Gosub Fug_geh
Gosub Fug_hlt
'Auto rot, Fußgänger rot
Dat = 9
Gosub I2c_write
Wait 3
'Auto rot-gelb, Fußgänger rot
Dat = 11
Gosub I2c_write
Wait 2
'Auto grün, Fußgänger rot
Dat = 12
Gosub I2c_write
Startb = 0
End If
Loop
Während der Grünphase für den Fußgänger wird mit den LEDs der Ping-Pong-Platine die
folgende Darstellung ein- und ausgeschaltet, und über einen an Portd.3 angeschlossenen Piezo-Schallwandler ertönt einen Piepen.

Fug_geh:
'Datei: Sim_Fg_g_2
Leds(1) = 0
Leds(2) = 832
Leds(3) = 720
Leds(4) = 232
Leds(5) = 336
Leds(6) = 320
Leds(7) = 32
Leds(8) = 922
Leds(9) = 637
Leds(10) = 138
Leds(11) = 272
Leds(12) = 256
Sound Portd.3 , 400 , 500
Waitms 500
'Datei:
Leds(1) = 0
Leds(2) = 0
Leds(3) = 0
Leds(4) = 0
Leds(5) = 0
Leds(6) = 0
Leds(7) = 0
Leds(8) = 0
Leds(9) = 0
Leds(10) = 0
Leds(11) = 0
Leds(12) = 0
Sound Portd.3 , 400 , 500
Waitms 500
...
Dies ist der Teil des Programms, in dem das zu der jeweiligen Ampelphase gehörende Byte Dat an das I2C-IC PCF8574 übermittelt wird.
...
I2c_write:
I2cstart
'feste Adresse des zweiten PCF8574 = 64
I2cwbyte 64
I2cwbyte Dat
I2cstop
Return
...
Die Darstellungen mit der Ping-Pong-Platine wurden vor der Gestaltung des Programmlistings mit dem Visual Basic Programm „Super-Mustergenerator" entworfen, einer Weiterentwicklung des Programms „Mustergenerator" das in einem ELO-Beitrag [4 ] bereits vorgestellt wurde.
Download: Programmlisting Ping_Ampl_Sim1.bas
Literatur, Bezugsquellen
[1] www.franzis.de, Bausatz Ping-Pong-Platine
[2] www.ak-modul-bus.de, Modell einer Fußgängerampel
[3] www.elo-web.de, Beitrag „Experimente mit dem ATTiny13 und I2C-Ics"
[4] www.elo-web.de, Beitrag" Mustergenerator"
[5]Ulli Sommer, „Lernpaket Mikrocontrollertechnik mit BASCOM", www.franzis.de, 2009