HSL-Farben
Farbcodierungen mit RGB (Rot, Grün, Blau) sind sehr gebräuchlich. Dabei wird jede Farbe durch die Anteile der drei Grundfarben beschrieben.
Farben können aber auch in HSL (Hue für den Farbton, Saturation für die Sättigung, und Lightness für die Helligkeit) angegeben werden. Der Vorteil davon ist, dass die eigentliche Farbe auf einem Farbkreis definiert wird. Dies ermöglicht es etwa, die Farbe abhängig vom Winkel zu setzen. So ist es einfach möglich, Farben zu wählen, die harmonisch zusammenpassen und etwa Farbverläufe zu erzeugen.
hsl(0, 100%, 50%)Verwenden Sie die Schiebregler im Farbwähler, um die HSL-Werte zu verändern. Halten Sie fest, was die einzelnen Parameter (Hue, Saturation, Lightness) bewirken.
Die HSL-Farben können wir später verwenden, um die Farb-LED's des Maqueen zu steuern. Vorerst betrachten wir die Farben aber isoliert.
Mit der Bibliothek led_control kann eine LED-Komponente in unserem Code verwenden.
LED: hsl-led
from time import sleep
from led_control import use_led
led = use_led('hsl-led')
led.set_hsl(0, 100, 50)
sleep(1)
led.set_hsl(120, 100, 50)
sleep(1)
led.set_hsl(240, 100, 50)
sleep(1)
led.reset()
use_ledDamit die richtige LED-Komponente angesprochen wird, muss die ID (hier 'hsl-led') mit der ID übereinstimmen, die in der LED-Komponente angezeigt wird.
Untersuchen Sie den obigen Code
- welche Farben werden für wie lange angezeigt?
- was bewirkt der Befehl
led.reset()?
Erzeugen Sie einen Farbverlauf, der einmal den Farbkreis durchläuft. Verwenden Sie dazu eine Schleife, die den Hue-Wert schrittweise ändert und nur ganz kurz (z.B. 0.05 Sekunden) zwischen den einzelnen Farbwechseln wartet.
LED: übergänge
from time import sleep
from led_control import use_led
led = use_led('übergänge')
Teilbarkeit von Zahlen
Ist eine Zahl ganzzahlig durch eine andere Zahl teilbar? Diese Frage lässt sich mit dem Modulo-Operator leicht beantworten.
% - Modulo-Operator
Der Modulo-Operator % gibt den Rest einer ganzzahligen Division zurück.
# 7 modulo 3 ergibt 1, da 7 / 3 = 2 Rest 1
print(7 % 3)
Der Modulo-Operator % gibt also den ganzzahligen Rest einer Division zurück. Dies ist immer dann nützlich, wenn eine Zahl in einem bestimmten Bereich gehalten werden soll.
Sollen also nacheinander die Zahlen 0, 1, 2 ausgegeben werden, so kann dies mit dem Modulo-Operator erreicht werden:
for i in range(20):
print(i % 3)
Dies kann auch verwendet werden, um die Farbe Hue in einem Farbkreis zu immer zwischen 0 und 360 halten und so eine durchgehende Farb-Animation zu erzeugen.
Erzeugen Sie eine durchgehende Farbanimation (mit einer while-Schleife), bei der die Farbe des Maqueen-Roboters sich kontinuierlich ändert. Verwenden Sie dazu den Modulo-Operator, um den Hue-Wert auf den Werteberich von 0-360 zu begrenzen.
LED: animation
from time import sleep
from led_control import use_led
led = use_led('animation')