Zum Hauptinhalt springen
26P

Einstieg

Inbetriebnahme Maqueen

Dokumentation

👉 Installation

Nehmen Sie den Maqueen gemäss folgender Anleitung in Betrieb. Für jedes Maqueen-Programm müssen diese Schritte zu Beginn durchgeführt werden.

  1. Überprüfen Sie, dass der Maqueen nach rechts dreht, dann gerade aus fährt und anhält.

  2. Markieren Sie die Aufgabe als erledigt.

Motoren motor_run(motor, speed)

Lässt den gewählten Motor mit der angegebenen Geschwindigkeit laufen.

Die Geschwindigkeit kann zwischen -255 und 255 liegen. Negative Werte bedeuten, dass der Motor rückwärts läuft.

Welcher Motor angesteuert wird, muss mit einer Zahl (oder der Konstantent aus Motor) angegeben werden:

Links

0 oder Motor.LEFT

Rechts

1 oder Motor.RIGHT

Beide

2 oder Motor.ALL

# den linke Motor mit 100% Geschwindigkeit vorwärts drehen lassen
motor_run(0, 255)
# oder äquivalent
motor_run(Motor.LEFT, 255)

# den rechten Motor rückwärts mit 50% drehen lassen
motor_run(Motor.RIGHT, -128)

# beide Motoren vorwärts drehen mit 100%
motor_run(Motor.ALL, 255)

sleep(ms)

Mit der Funktion sleep(ms) kann das Programm für eine bestimmte Anzahl Millisekunden angehalten werden.

Diese Funktion funktioniert im Browser leider nicht, auf dem Micro:Bit jedoch schon (oder auch wenn Python lokal installiert ist). Während dem der Micro:bit wartet/schläft, kann er keine anderen Befehle ausführen - sich drehende Motoren drehen sich aber in dieser Zeit weiter.

from microbit import *
from maqueen import *

while True:
motor_run(Motor.ALL, 255)
sleep(1000) # wartet 1 Sekunde
motor_run(Motor.ALL, -255)
sleep(1000) # wartet 1 Sekunde

Motor stoppen motor_stop()

Mit motor_stop() können alle Motoren gestoppt werden. Optional kann auch nur ein Motor gestoppt werden.

# stoppt beide Motoren
motor_stop()
# stoppt den linken Motor
motor_stop(0)
# oder äquivalent
motor_stop(Motor.LEFT)
Geradeausfahern

Die Drehgeschwindigkeit der Motoren wird über die Spannung gesteuert und ist leider nicht sehr präzise. Daher kann es sein, dass der Maqueen nicht geradeaus fährt, sondern eine Kurve macht - auch wenn bei beiden Motoren derselbe Zahlenwert eingestellt ist. Dies muss durch Ausprobieren und Anpassen der Geschwindigkeit der Motoren korrigiert werden.

Hinweis Kurvenfahren

Kurvenfahren kann durch unterschiedliche Geschwindigkeiten der linken- und rechten Motoren erreicht werden. Soll der Maqueen an Ort und Stelle drehen, so müssen die Motoren in entgegengesetzte Richtungen laufen.

Quadrat fahren

Schreiben Sie ein Programm, das den Maqueen ein Quadrat fahren lässt.

SSR

⭐ Zusatz

Ändern Sie das Programm so ab, dass der Maqueen an den Ecken jeweils eine zusätzliche 360 ° Drehung vollzieht.

LED's

Der Maqueen hat mehrere LED's, die einzeln angesteuert werden können.

Farb-LED's

Der Maqueen hat an der Unterseite 4 Farb-LED's.

Anordnung der Farb-LED's
Anordnung der Farb-LED's
# alle Farb-LED's in rot einschalten
led_rgb(Color.RED)

# die LED vorne links auf grün setzen
led_rgb(Color.GREEN, ColorLED.L1)

# eigene RGB-Farbe vorn rechts setzen
led_rgb(rgb(255, 128, 0), ColorLED.R1)

# Blau für alle LED's bei einer Helligkeitsstufe 50 setzen.
led_rgb(Color.BLUE, brightness=50) # Ändert die globale Helligkeit nicht.

HSL-Farben

Die Farben können auch in HSL (Hue, Saturation, Lightness) angegeben werden. Der Vorteil davon ist, dass die eigentliche Farbe auf einem Farbkreis definiert wird.

HSL-Farbkreis
HSL-Farbkreis
from maqueen import *
led_rgb(hsl( 0, 100, 50)) # => LED's in rot
led_rgb(hsl(180, 100, 50)) # => LED's in cyan
Lightness

Die Lightness (letzter Parameter) gibt an, wie hell die Farbe ist. 0 ist schwarz, 100 ist weiss. Sollen satte Farben angezeigt werden, sollte die Lightness auf ca. 50 gesetzt werden.

Dies ermöglicht es etwa, die Farbe abhängig vom Winkel zu setzen.

Modulo Operator %

Der Modulo-Operator % gibt den genzzahligen Rest einer Division zurück. Dies ist immer dann nützlich, wenn eine Zahl in einem bestimmten Bereich gehalten werden soll.

Beispiele

# 5 modulo 2 ergibt 1, da 5 / 2 = 2 rest 1 ergibt
print(f'5 modulo 2 = {5 % 2}')
# gibt nacheinander 0, 1, 2, 0, 1, 2, 0, 1, 2, 0 aus
for i in range(10):
print(f'{i} modulo 3 = {i % 3}')
Farb-Disco

Studieren Sie den folgenden Code und passen Sie ihn so an, dass die Farben nach einer Umdrehung wieder auf rot gesetzt werden. Der Roboter soll sich unendlich lang drehen und dabei die Farben wechseln.

from microbit import *
from maqueen import *

motor_run(Motor.LEFT, 20)
motor_run(Motor.RIGHT, -20)

angle = 0
while True:
led_rgb(hsl(angle, 100, 50))
angle = angle + 1
sleep(10) # für 10 ms warten

Hilfestellungen

Hinweis 1

Verwenden Sie den Modulo-Operator % um den Winkel auf 360 zu begrenzen.

Hinweis 2

Stoppen Sie die Zeit, die für eine Umdrehung benötigt wird. Berechnen Sie damit, wie lange gewartet (sleep) werden muss, bis die Farbe nächste Farbe gesetzt wird.

Hinweis 3

Berechnung der Wartezeit:

Wartezeit=Zeit fu¨r 360° in Sekunden1000360\text{{Wartezeit}} = \frac{\text{Zeit für 360° in Sekunden} \cdot 1000}{360}
Ultraschall-Sensor und Mikrofon

Mit dem Ultraschall-Sensor kann die Entfernung zu einem Objekt gemessen werden. Dabei werden Ultraschallwellen ausgesendet und die Zeit gemessen, bis das Echo zurückkommt.

@

Zum Glück müssen Sie sich nicht um die genaue Berechnung kümmern, sondern können die Funktion ultrasonic() verwenden, was die Entfernung in cm zurückgibt.

  1. Studieren Sie die rudimentäre Hinderniserkennung im Code-Beispiel auf der Webseite: 👉 Hinderniserkennung

  2. Probieren Sie den Code aus und halten Sie fest, wie der Algorithmus funktioniert. Insbesondere, wie der Drehwinkel des Maqueen eingestellt wird.

  3. Ändern Sie das Programm so ab, dass der Maqueen auch die Richtung wechselt, wenn in die Hände geklatscht wird (was pauschal einem lauten Geräusch entspricht). Lesen Sie dazu die Dokumentation zum Mikrofon: 👉 Mikrofon

Ultraschall Lead-and-Follow

Schreiben Sie ein Programm, bei welchem der Maqueen immer 10 cm Abstand zu Ihrer Hand hält. Ist die Distanz kleiner, fährt der Maqueen rückwärts, ist die Distanz grösser, fährt er vorwärts. Eine Richtungsänderung erfolgt dabei nie.