User manual

Heute im Adventskalender
1 × Knete
Ampel mit Fußgängerampel und
Knetekontakt
Das Experiment des 15. Tags steuert die gleiche Ampel über einen Knete-
kontakt anstatt über einen Taster oder eine Aktion in Minecraft
TM
. Mit der
Knete der zweiten Farbe können Sie den Massekontakt (falls Sie ihn benöti-
gen) besser unterscheidbar machen.
Bauteile
1 Steckbrett
1 LED rot mit eingebautem Vorwiderstand
1 LED gelb mit eingebautem Vorwiderstand
1 LED grün mit eingebautem Vorwiderstand
2 RGB-LED mit eingebauten Vorwiderständen
1 20-MOhm-Widerstand (rot-schwarz-blau)
8 GPIO-Verbindungskabel
2 Knetekontakte
Das Programm
Das Programm 15mc_ampel04.py steuert die Fußgängerampel über ei-
nen Knetekontakt.
#!/usr/bin/python
import mcpi.minecraft as minecraft
import mcpi.block as block
import RPi.GPIO as GPIO
import time
mc = minecraft.Minecraft.create()
r = 18
o = 23
g = 24
t1 = 21
rf = 7
gf = 12
r1 = 14
o1 = 4
g1 = 5
sw = 15
ax = -14
az = -27
fx = -12
fz = -31
GPIO.setmode(GPIO.BCM)
GPIO.setup(r, GPIO.OUT, initial=False)
GPIO.setup(o, GPIO.OUT, initial=False)
GPIO.setup(g, GPIO.OUT, initial=True)
GPIO.setup(rf, GPIO.OUT, initial=True)
GPIO.setup(gf, GPIO.OUT, initial=False)
GPIO.setup(t1, GPIO.IN)
mc.setBlock(ax, 0, az, block.WOOL.id, g1)
mc.setBlock(fx, 1, fz, block.WOOL.id, r1)
try:
while True:
if GPIO.input(t1)==False:
mc.setBlock(ax, 1, az, block.WOOL.id, o1)
GPIO.output(o, True)
mc.setBlock(ax, 0, az, block.WOOL.id, sw)
GPIO.output(g, False)
time.sleep(0.6)
mc.setBlock(ax, 2, az, block.WOOL.id, r1)
GPIO.output(r, True)
mc.setBlock(ax, 1, az, block.WOOL.id, sw)
GPIO.output(o, False)
time.sleep(0.6)
mc.setBlock(fx, 0, fz, block.WOOL.id, g1)
GPIO.output(gf, True)
mc.setBlock(fx, 1, fz, block.WOOL.id, sw)
GPIO.output(rf, False)
time.sleep(2)
mc.setBlock(fx, 1, fz, block.WOOL.id, r1)
GPIO.output(rf, True)
mc.setBlock(fx, 0, fz, block.WOOL.id, sw)
GPIO.output(gf, False)
time.sleep(0.6)
mc.setBlock(ax, 1, az, block.WOOL.id, o1)
GPIO.output(o, True)
time.sleep(0.6)
mc.setBlock(ax, 0, az, block.WOOL.id, g1)
GPIO.output(g, True)
mc.setBlock(ax, 2, az, block.WOOL.id, sw)
GPIO.output(r, False)
mc.setBlock(ax, 1, az, block.WOOL.id, sw)
GPIO.output(o, False)
time.sleep(0.6)
except KeyboardInterrupt:
mc.setBlock(ax, 0, az, block.WOOL.id, sw)
mc.setBlock(fx, 1, fz, block.WOOL.id, sw)
GPIO.cleanup()
So funktioniert das Programm
Das Programm 15mc_ampel04.py entspricht dem Programm von ges-
tern bis auf zwei Kleinigkeiten, die den Unterschied zwischen Taster und
Knetekontakt ausmachen.
GPIO.setup(t1, GPIO.IN)
Der GPIO-Pin für den Knetekontakt wird als Eingang ohne Pull-down-Wider-
stand gesetzt.
if GPIO.input(t1)==False:
Die if-Abfrage in der Endlosschleife wartet darauf, dass der Eingang den
Wert False annimmt.
Ampel aus LEDs und RGB-LEDs mit Knetekontakten auf dem Steckbrett. Der zweite
Knetekontakt an der Masseschiene wird nicht in jedem Fall benötigt.