User manual

Heute im Adventskalender
1 RGB-LED mit eingebauten Vorwiderständen
Ampel mit Fußgängerampel
Neben der Zahl 13 in der Minecraft
TM
-Welt liegt eine Straße. Zwei schwarze
Säulen stellen eine Verkehrsampel und eine Fußgängerampel dar. Daneben
befindet sich ein metallisch schimmernder Block. Er dient als Schalter für die
Ampel. Schlägt die Spielfigur mit dem Schwert darauf, wird der Ampelzy-
klus gestartet, bis die Fußgängerampel für 2 Sekunden grün leuchtet. Der
Ampelzyklus wird auf den Ampeln in der Minecraft
TM
-Welt dargestellt. Zu-
sätzlich leuchten auch die LEDs.
Straße mit Ampel und Fußgängerampel.
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
6 GPIO-Verbindungskabel
Von beiden RGB-LEDs wird nur jeweils eine Farbe für die Fußgängerampel
verwendet. Die Verkehrsampel besteht aus drei einfarbigen LEDs.
Das Programm
Das Programm 13mc_ampel02.py steuert die Fußgängerampel, wenn
die Spielfigur auf den metallischen Block am Straßenübergang schlägt.
#!/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
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)
mc.setBlock(ax, 0, az, block.WOOL.id, g1)
mc.setBlock(fx, 1, fz, block.WOOL.id, r1)
try:
while True:
for hit in mc.events.pollBlockHits():
bl = mc.getBlockWithData(hit.pos.x, hit.
pos.y, hit.pos.z)
if bl.id == block.IRON_ORE.id:
mc.setBlock(hit.pos.x, hit.pos.y, hit.
pos.z, block.GOLD_ORE.id)
time.sleep(0.1)
mc.setBlock(hit.pos.x, hit.pos.y, hit.
pos.z, block.IRON_ORE.id)
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)
Ampel aus LEDs und RGB-LEDs auf dem Steckbrett.