3 - Abschlussaufgabe¶
Eine letzte Aufgabe
Wir wollen nun überprüfen, wie gut du bereits mit den Tinkerforge-Bausatz umgehen kannst. Dazu wirst du nun ein neues Bricklet benutzen. Benutze das Joystick-Bricklet um einen Punkt auf dem LED-Strip nach rechts oder links zu bewegen.
Tipp: Nutze dazu die Positions-Callback-Funktionen des Joystick-Bricklets. Du wirst dazu lediglich die x-Achse auswerten müssen. Nutze eine Periode von 200 ms in der Callback-Funktion. Die Callback-Funktion sollte zudem immer nach 200 ms aufgerufen werden und nicht nur, wenn sich die Position des Joysticks ändert. Ansonsten müsstest du den Joystick immer ein wenig bewegen. Der Punkt soll sich aber ständig nach rechts bewegen, solange der Joystick nach rechts geneigt ist:
joystickBricklet.set_position_callback_configuration(200, False)
Wenn du nicht genug kriegst!
Wie wäre es, wenn du mit links/rechts beim Joystick den LED-Punkt bewegst und mit oben/unten die Farbe änderst? Probiers aus!
Regenbogen-RGB-Farben schrittweise
Die folgenden Funktion getRainbowColor
gibt eine Farbe innerhalb des Regenbogenspektrums zurück. Dabei kann man das Spektrum mit maxsteps
bewliebig unterteilen. steps
legt die Position innerhalb des Spektrums fest, dessen Farbe die Funktion zurückgeben soll. Die Farbe kommen als Array [R, G, B]
zurück.
def getRainbowColor(step, maxsteps):
number = step/maxsteps*6
if number <= 1:
return [255, int(step/maxsteps*6*255), 0]
elif number <= 2:
return [int((1-(step/maxsteps*6-1))*255), 255, 0]
elif number <= 3:
return [0, 255, int((step/maxsteps*6-2)*255)]
elif number <= 4:
return [0, int((1-(step/maxsteps*6-3))*255), 255]
elif number <= 5:
return [int((step/maxsteps*6-4)*255), 0, 255]
elif number <= 6:
return [255, 0, int((1-(step/maxsteps*6-5))*255)]
Lösungsbeispiele
Mögliche Lösungen zu den Beispielen findet ihr hier: Lösungsbeispiele