User manual
Heute im Adventskalender
1 LED lila mit eingebautem Vorwiderstand
Wir bauen ein Klavier
Im Experiment des 23. Tags wird ein Klavier gebaut, um damit zu Weihnach-
ten Musik zu machen. Damit das Klavier nicht in Sekundenbruchteilen von
Geisterhand entsteht, erscheint nach jedem gebauten Teil eine kurze Blink-
sequenz aus fünf LEDs.
Bauteile
1 Steckbrett
1 LED rot mit eingebautem Vorwiderstand
1 LED orange mit eingebautem Vorwiderstand
1 LED gelb mit eingebautem Vorwiderstand
1 LED grün mit eingebautem Vorwiderstand
1 LED blau mit eingebautem Vorwiderstand
6 GPIO-Verbindungskabel
Fünf LEDs zeigen den Aufbau des Klaviers.
Das Programm
Das Programm 23mc_klavier02.py baut das Klavier auf der Wasserflä-
che rechts neben der Zahl 23 in der Minecraft
TM
-Welt.
Das fertige Klavier.
#!/usr/bin/python
import mcpi.minecraft as minecraft
import mcpi.block as block
import RPi.GPIO as GPIO
import time
LED = [8,25,24,23,18]
GPIO.setmode(GPIO.BCM)
for i in LED:
GPIO.setup(i, GPIO.OUT, initial=False)
def blink():
for i in LED:
GPIO.output(i,True)
time.sleep(0.05)
GPIO.output(i,False)
x = -22
z = 30
mc = minecraft.Minecraft.create()
mc.setBlocks(x+1, 0, z-1, x-16, 0, z+27, block.
STONE_SLAB_DOUBLE.id)
blink()
mc.setBlocks(x, 1, z, x-10, 1, z+26, block.
STONE_SLAB_DOUBLE.id)
blink()
for i in range(7):
mc.setBlocks(x, 1, z+i*4, x-10, 1, z+2+i*4,
block.WOOL.id, 0)
blink()
for i in range(2):
mc.setBlocks(x, 2, z+2+i*4, x-7, 2, z+4+i*4,
block.WOOL.id, 15)
blink()
for i in range(3):
mc.setBlocks(x, 2, z+14+i*4, x-7, 2, z+16+i*4,
block.WOOL.id, 15)
blink()
GPIO.cleanup()
So funktioniert das Programm
LED = [8,25,24,23,18]
GPIO.setmode(GPIO.BCM)
for i in LED:
GPIO.setup(i, GPIO.OUT, initial=False)
Nach dem Import der Module werden die GPIO-Pins der LEDs in der Liste
LED[] gespeichert und über eine Schleife als Ausgänge definiert und aus-
geschaltet.
def blink():
for i in LED:
GPIO.output(i,True)
time.sleep(0.05)
GPIO.output(i,False)
Dann wird eine Funktion blink() definiert, die die LEDs als Lauflicht kurz
hintereinander aufleuchten lässt. Mit solchen Funktionen kann man in Py-
thon häufig wiederkehrende Programmteile einmal festlegen und dann bei
Bedarf immer wieder aufrufen. Funktionen müssen vor ihrer ersten Verwen-
dung im Programm mit dem Schlüsselwort def definiert werden.
x = -22
z = 30
Die Koordinaten x und z definieren den Anfangspunkt des Klaviers oben
links.
mc.setBlocks(x+1, 0, z-1, x-16, 0, z+27, block.
STONE_SLAB_DOUBLE.id)
Auf y-Höhe 0 wird eine Grundplatte gebaut. Sie ist größer als das Klavier
selbst, damit sich die Spielfigur vor dem Klavier bewegen kann, ohne ins
Wasser zu fallen.
blink()
Nach jedem fertig gebauten Teil wird einmal die Blinksequenz gestartet.
mc.setBlocks(x, 1, z, x-10, 1, z+26, block.
STONE_SLAB_DOUBLE.id)
Eine Schicht aus Blöcken aus dem Material block.STONE_SLAB_DOUBLE
auf y-Höhe 1 stellt die Klaviertasten und deren Zwischenräume dar. Der Ein-
fachheit halber werden sie zunächst als zusammenhängender Block gebaut.










