Micro:Bit Editor
Maqueen Bibliothek
Ziel
Bewältigung eines Parcours mit Hindernissen
Gruppengrösse
2 Personen
Note
Zählt 0.5
Abgabe
Code und Kurzbeschreibung
Mi. 15.5.24 bis 22:00 Uhr
Mit dem iPad kann der Micro:Bit nicht direkt programmiert werden. Es ist jedoch möglich, den Code auf dem iPad zu schreiben und dann wie folgt auf den Micro:Bit zu übertragen:
Anleitung
iOS App
Die Note setzt sich zusammen aus dem praktischen Teil und dem Bericht. Die Note zählt 0.5.
Praktischer Teil
Für die Note zählen die umgesetzten Funktionalitäten des Roboters
Gewichtung: 70 %
Bericht
Tagebucheinträge (mind. 3) - was haben Sie gemacht, was hat funktioniert, was nicht?Zu jeder Funktionalität, die Sie am Wettbewerb gezeigt haben: Welche Überlegungen und Konzepte stecken dahinter? (Welche Idee steht bspw. hinter dem "Blinken-Feature" und wie konnte das Blinken umgesetzt werden, ohne dass ein sanftes "Farbwechseln" ist?) Pro Funktion ca. 1/4-1/2 Seite.
Min. ein Foto des Roboters
Code: Der Code ist kommentiert und nachvollziehbar
Die Rechtschreibung und Formatierung wird ebenfalls miteinbezogen - es wird ein ordentlich verfasster Bericht erwartet.
Gewichtung: 30 %
Wettbewerb
Wer bewältigt den Parcours am schnellsten?
Punkteskala
punkte = 6 # erreichte Punkte
note = min(6, (punkte / 10) * 5 + 1)
print('Note:', note)
Mögliche Punkte
-
Parcours bewältigt, ohne manuellen Eingriff (6 Punkte)
-
Parcours bewältigt, mit manuellem Eingriff (4 Punkte)
-
Der Roboter blinkt während der Fahrt in verschiedenen Farben (1 Punkt)
-
Der Roboter bleibt stehen, wenn er auf ein Hindernis trifft und fährt dann weiter, wenn es wieder weg ist (1 Punkt)
-
Der Roboter dreht sich um 360 ° wenn geklatscht wird (1 Punkt)
-
Der Roboter zeigt auf dem Display mit einem Pfeil an, ob er aktuell links, rechts oder gerade steuert. (1 Punkt)
-
Der Roboter spielt beim Richtungswechsel einen Ton oder eine kurze Melodie (1 Punkt)
-
⭐ Der Roboter findet den Weg zum Ziel, auch wenn Einbahnstrassen vorhanden sind (1 Punkt)
-
⭐ Der Roboter kann einem Hindernis ausweichen und findet die Fahrtstrecke wieder (2 Punkte)
Trouble Shooting
Ausgangslage
zustand = 'vorwärts'
while True:
if zustand == 'vorwärts':
# motoren vorwärts
if line_sensor(LineSensor.M) == 1:
zustand = 'vorwärts'
elif line_sensor(LineSensor.L1) == 0:
zustand = 'rechts'
elif line_sensor(LineSensor.R1) == 0:
zustand = 'links'
elif zustand == 'rechts':
...
Ist M=0
und sowohl L1
wie auch R1
sehen weiss (kann passieren, wenn die Linie in einer Kurve zu schmal ist), dann wird der Roboter immer nach rechts fahren, auch wenn er eigentlich nach links müsste.
Die Lösung besteht darin zu überprüfen, ob L1
oder R1
eine hellere Farbe misst und dann entsprechend eine andere Entscheidung zu treffen. Dies kann mit den über die Funktion line_sensor_data
abfragbaren Rohdaten der Sensoren gemacht werden. Dabei gilt (!entgegen der 0=Weiss, 1=Schwarz
):
Wert
0
Sensor sieht komplett Schwarz
Wert
255
Sensor sieht komplett Weiss
Lösung
zustand = 'vorwärts'
while True:
if zustand == 'vorwärts':
# motoren vorwärts
if line_sensor(LineSensor.M) == 1:
zustand = 'vorwärts'
elif line_sensor(LineSensor.L1) == 0 and line_sensor(LineSensor.R1) == 0:
# wenn L1 heller ist als R1 (also L1 > R1): dann fahre nach rechts
if line_sensor_data(LineSensor.L1) > line_sensor_data(LineSensor.R1):
zustand = 'rechts'
# sonst nach links
else:
zustand = 'links'
elif line_sensor(LineSensor.L1) == 0:
zustand = 'rechts'
elif line_sensor(LineSensor.R1) == 0:
zustand = 'links'
elif zustand == 'rechts':
...
Robotik