User manual
Heute im Adventskalender
1 20-MOhm-Widerstand (rot-schwarz-blau)
RGB-Farbmischung mit Knete-
kontakten
Im Experiment des 16. Tags werden die Farben einer RGB-LED durch mehr-
faches Antippen dreier Knetekontakte gesteuert. Die bereits am 11. Tag
verwendeten farbigen Balken in der Minecraft
TM
-Welt werden heute nur
zur Anzeige verwendet und nicht von der Spielfigur mit dem Schwert an-
geschlagen.
Balkenanzeige für die Farben der RGB-LED.
Bauteile
1 Steckbrett
1 RGB-LED mit eingebautem Vorwiderstand
3 20-MOhm-Widerstände (rot-schwarz-blau)
8 GPIO-Verbindungskabel
4 Knetekontakte
Das Programm
Das Programm 16mc_rgb05 verändert die PWM-Signale der drei Farben
der RGB-LED zyklisch durch mehrfaches Antippen der Knetekontakte.
#!/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 = 24
g = 23
b = 18
rk = 12
gk = 16
bk = 21
r0 = 14
g0 = 13
b0 = 11
r1 = 1
g1 = 5
b1 = 3
rx = -8
gx = -9
bx = -10
y = 3
z = 21
rl = 0
bl = 0
gl = 0
GPIO.setmode(GPIO.BCM)
GPIO.setup(r, GPIO.OUT, initial=False)
GPIO.setup(g, GPIO.OUT, initial=False)
GPIO.setup(b, GPIO.OUT, initial=False)
GPIO.setup(rk, GPIO.IN)
GPIO.setup(gk, GPIO.IN)
GPIO.setup(bk, GPIO.IN)
rp = GPIO.PWM(r, 50)
gp = GPIO.PWM(g, 50)
bp = GPIO.PWM(b, 50)
rp.start(rl)
gp.start(gl)
bp.start(bl)
try:
while True:
if GPIO.input(rk) == False:
if rl < 10:
rl += 1
else:
rl = 0
for i in range(rl):
mc.setBlock(rx, y, z+i, block.WOOL.id, r1)
for i in range(10-rl):
mc.setBlock(rx, y, z+rl+i, block.WOOL.
id, r0)
rp.ChangeDutyCycle(rl*10)
time.sleep(0.05)
if GPIO.input(gk) == False:
if gl < 10:
gl += 1
else:
gl = 0
for i in range(gl):
mc.setBlock(gx, y, z+i, block.WOOL.id, g1)
for i in range(10-gl):
mc.setBlock(gx, y, z+gl+i, block.WOOL.
id, g0)
gp.ChangeDutyCycle(gl*10)
time.sleep(0.05)
if GPIO.input(bk) == False:
if bl < 10:
bl += 1
else:
bl = 0
for i in range(bl):
mc.setBlock(bx, y, z+i, block.WOOL.id, b1)
for i in range(10-bl):
mc.setBlock(bx, y, z+bl+i, block.WOOL.
id, b0)
bp.ChangeDutyCycle(bl*10)
time.sleep(0.05)
except KeyboardInterrupt:
GPIO.cleanup()
Drei Knetekontakte zur Steuerung einer RGB-LED und ein Massekontakt.










