User manual
Heute im Adventskalender
1 x Knete
1 20-MOhm-Widerstand (rot-schwarz-blau)
Sensorkontakt aus Knete
Ampeln, Türöffner, Lichtschalter und Automaten werden heute oft mit Sen-
sorkontakten gesteuert, die man nur zu berühren braucht. Taster, die wirk-
lich gedrückt werden müssen, werden immer seltener. Das Experiment des
9. Tags lässt einen Steinblock über einen einfachen Sensorkontakt leuchten.
Bauteile
1 Steckbrett
1 LED blau mit eingebautem Vorwiderstand
1 20-MOhm-Widerstand (rot-schwarz-blau)
4 GPIO-Verbindungskabel
1 Knetekontakt
So funktionieren Sensorkontakte
Der als Eingang geschaltete GPIO-Pin ist über einen extrem hochohmigen
Widerstand (20 MOhm) mit +3,3 V verbunden, sodass ein schwaches, aber
eindeutig als High definiertes Signal anliegt. Ein Mensch, der nicht gerade
frei in der Luft schwebt, ist immer geerdet und liefert über die elektrisch leit-
fähige Haut einen Low-Pegel. Berührt dieser Mensch einen Sensorkontakt,
wird das schwache High-Signal von dem deutlich stärkeren Low-Pegel der
Hand überlagert und zieht den GPIO-Pin auf Low-Pegel.
Das Programm
Das Programm 09mc_knete01.py prüft in einer Endlosschleife, ob
der Knetekontakt berührt wird. Ist das der Fall, wird neben der Zahl 9 in
der Minecraft
TM
-Welt ein 2 × 2 Einheiten großer Quader aus dem Material
DIAMOND_ORE erstellt. Wird der Knetekontakt nicht berührt, erscheint an
der gleichen Stelle ein Quader aus dem Material STONE. Beide Materialien
ähneln sich stark, sodass die Veränderung wie ein Aufleuchten des Blocks
aussieht. Zusätzlich leuchtet die blaue LED immer dann, wenn der Knete-
kontakt berührt wird.
#!/usr/bin/python
import mcpi.minecraft as minecraft
import mcpi.block as block
import RPi.GPIO as GPIO
import time
mc = minecraft.Minecraft.create()
LED = 18
k1 = 20
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED, GPIO.OUT, initial=False)
GPIO.setup(k1, GPIO.IN)
try:
while True:
if GPIO.input(k1) == False:
GPIO.output(LED, True)
mc.setBlocks(-8, 4, 5, -7, 4, 4, block.
DIAMOND_ORE)
else:
GPIO.output(LED, False)
mc.setBlocks(-8, 4, 5, -7, 4, 4, block.STONE)
time.sleep(0.05)
except KeyboardInterrupt:
GPIO.cleanup()
So funktioniert das Programm
LED = 18
k1 = 20
Die Nummern der GPIO-Pins der LED und des Knetekontakts werden in Va-
riablen gespeichert.
GPIO.setup(k1, GPIO.IN)
Damit die Sensorkontakte funktionieren, muss zuerst der interne
Pull-down-Widerstand an GPIO-Pin 20 ausgeschaltet werden. Deshalb fehlt
in der Zeile GPIO.setup() der dritte Parameter.
try:
while True:
if GPIO.input(k1) == False:
Die Endlosschleife überprüft, ob der Knetekontakt berührt wurde. Da der
GPIO-Pin bei Berührung mit Masse verbunden wird, ohne Berührung dage-
gen ein High-Signal erhält, fragt die if-Abfrage, ob der Pin auf False steht.
GPIO.output(LED, True)
Ist das der Fall, wird die LED eingeschaltet.
mc.setBlocks(-8, 4, 5, -7, 4, 4, block.
DIAMOND_ORE)
Die Methode .setBlocks() baut einen 2 × 1 × 2 Blöcke großen Quader
aus dem leuchtenden Material DIAMOND_ORE.
else:
GPIO.output(LED, False)
mc.setBlocks(-8, 4, 5, -7, 4, 4, block.STONE)
Wird der Knetekontakt dagegen nicht berührt, wird die LED ausgeschaltet,
und ein Quader aus dem grauen Material STONE wird gebaut.
time.sleep(0.05)
Eine kurze Wartezeit soll das Flackern zwischen beiden Zuständen des
Blocks verhindern. Je nachdem, wie gut die Masseverbindung über den
Knetekontakt ist, müssen Sie diese Zeit eventuell etwas verlängern.
Sensorkontakt und Kontroll-LED.










