Pi2Go, Pi2Go TTS und Pi2Go Ultimate verfügen über 4 Paare farbfähiger LEDs, die vorne, hinten und seitwärts links und rechts angebracht sind. Die einzelne LEDs-Paare können mit dem Parameter 0, 1, 2 oder 3 oder mit der Bezeichner LED_FRONT = 0, LED_LEFT = 1, LED_REAR = 2, RED_RIGHT = 3 angesprochen werden. |
Die Farbe wird durch Aufruf der Funktion setColor("color") mit einem Farbnamen oder mit setColor(r, g, b) mit den RGB-Farbanteilen gewählt. Wie üblich liegen diese im Bereich 0..255, z.B. setColor(255, 0, 0). Bei den Farbnamen können alle X11-Farben gewählt werden z.B. setColor("fuchsia"). Mit setColorAll() werden alle LEDs angesteuert. Will man beispielsweise alle 8 LEDs weiss leuchten lassen, so verwendet man den Befehl: Led.setColorAll("white"). Dabei wird der Klassenname an Stelle eines Objekts verwendet (sog. statische Methode). |
|
Der Roboter Pi2Go-Lite hat nur 2 Paare weisse LEDs, die vorne und hinten angebracht sind. Diese werden auf gleiche Art mit den Werten LED_FRONT und RED_REAR angesprochen.
Beispiel 1: Leds in verschiedenen Farben einschalten Im Remote- und Simulationsmodus können die Leds mit den Cursortasten eingeschaltet werden: UP: vorne, DOWN: hinten, LEFT links, RIGHT: rechts, ENTER: alle. Im autonomen Modus (Leds1a.py) leuchten zuerst die vorderen LEDs 2000 Millisekunden rot, dann die hinteren 2000 ms grün, danach die linken und rechten gelb und am Schluss alle 8 LEDs weiss.
|
Erklärungen zum Programmcode:
ledLeft.setColor("yellow"), oder ledRear.setColor(0, 255, 0): die Led leuchtet grün | |
Led.clearAll(): alle Leds werden abgeschaltet |
Beispiel 2: SOS senden In einer mit Escape abbrechbaren Wiederholschleife leuchten alle LEDs zuerst dreimal kurz (S) und danach dreimal lang (O). Die Pausen werden mit dem Befehl Led.clearAll() programmiert. Dabei werden alle LEDs ausgeschaltet.
|
Erklärungen zum Programmcode:
Led.clearAll(): schaltet alle LEDs aus |
Beispiel 3: Blinker ein- und ausschalten (Remote und Simulationsmodus) Mit den Cursortasten LEFT bzw. RIGHT werden linken bzw. rechten Leds blinkend eingeschaltet, so wie bei einem Autoblinker. Mit der ENTER-Taste wird der Blinker ausgeschaltet. Die Funktion blinker() läuft im eigenen Thread. Der Thread wird durch Aufruf der Methode start_new_thread() gestartet. Dieser führt die Funktion blinker() aus. Die zugehörige Parameterliste muss mehr als ein Element enthalten, deswegen das Komma und die Leerstelle.
|
Erklärungen zum Programmcode:
while isRunning: damit der rechte und linke Blinker beliebig oft verwendet werden kann, wird dieser Flag gesetzt. Erst wenn das Programm mit ESCAPE beendet wird, wird der Thread mit der Funktion blinker() beendet. |
Aufgaben Serie 7: |
1) |
Schreibe ein Programm, mit dem die Leds mit Cursortasten eingeschaltet werden: UP: vorne, DOWN: hinten, LEFT links, RIGHT: rechts. Wähle verschiedene Ledsfarben. Ergänze das Beispiel 1 so, dass mit ENTER-Taste alle Leds ausgeschaltet werden. Die Cursortasten können nur im Remote- und Simulationsmodus verwendet werden. |
2) |
Ergänze das Programm im Beispiel 3 so, dass der Roboter gesteuert mit Cursortasten LEFT, RIGHT, UP auf dem linken Bogen, rechten Bogen oder Geradeaus fährt. Wenn er links fährt, blinken die Leds auf der linken Seite, beim Rechtsfahren auf der rechten Seite. Beim Geradeausfahren sind beide Blinker abgestellt.
|
|