User manual

Heute im Adventskalender
1 GPIO-Verbindungskabel
Ampel mit Fußgängerampel und
Taster
Das Experiment des 14. Tags steuert die gleiche Ampel über einen Taster auf
dem Steckbrett anstatt über eine Aktion in Minecraft
TM
.
Bauteile
1 Steckbrett
1 LED rot mit eingebautem Vorwiderstand
1 LED gelb mit eingebautem Vorwiderstand
1 LED grün mit eingebautem Vorwiderstand
2 RGB-LEDs mit eingebauten Vorwiderständen
1 Taster
8 GPIO-Verbindungskabel
Das Programm
Das Programm 14mc_ampel03.py steuert die Fußgängerampel über ei-
nen Taster auf dem Steckbrett.
#!/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, GPIO.PUD_DOWN)
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)==True:
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()
Ampel aus LEDs und RGB-LEDs mit Taster auf dem Steckbrett.
So funktioniert das Programm
t1 = 21
...
GPIO.setup(t1, GPIO.IN, GPIO.PUD_DOWN)
Das Programm 14mc_ampel03.py ähnelt stark dem Programm von ges-
tern. Am Anfang wird zusätzlich eine Variable t1 angelegt, in der der GPIO-
Pin des Tasters gespeichert ist. Der GPIO-Pin für den Taster wird als Eingang
mit Pull-down-Widerstand gesetzt.
try:
while True:
if GPIO.input(t1)==True:
Die Endlosschleife wartet in dieser Programmversion darauf, dass der Taster
gedrückt wird und dadurch am GPIO-Pin ein True-Signal anliegt. In diesem
Fall läuft der gleiche Ampelzyklus wie im Programm von gestern durch. Nur
der metallische Block leuchtet nicht auf, da er auch nicht angeschlagen wird.