Deutsch English |
DU LERNST HIER... |
wie du einen Roboter programmierst, damit dieser bestimmte Tätigkeiten selbständig ausführt. |
ROBOTER "mbRobot" |
|
ROBOTER "BUGGY" |
Das folgende Blockbild für eine automatisierte Maschine ist darum sehr allgemein gültig und du erkennst diese Komponenten leicht bei deinem Buggy-Roboter. Da der micro:bit in der Maschine integriert ist, nennt man sie auch ein "eingebettetes System" (embedded system). |
MUSTERBEISPIELE |
Bevor du ein anspruchsvolleres Problem anpackst, solltest du immer einige Tests durchführen, um das richtige Funktionieren der Komponenten einzelnen zu überprüfen und den Code zur Ansteuerung der Hardware kennen zu lernen. 1. Tests mit dem linken und rechten Motor Solche Signale werden als Puls-Width-Modulation (PWM) bezeichnet und du erzeugst ein PWM-Signal beispielsweise am Pin0 mit dem Befehl: pin0.write_analog(duty), wo duty eine Zahl zwischen 0 und 1023 ist, welche die Einschaltdauer ton festlegt. Mit folgendem Programm dreht der linke Motor zuerst 2000 Millisekunden vorwärts und dann 2000 Millisekunden rückwärts. Damit die Motoren mit den Batterien versorgt werden, musst du den kleinen Schalter auf der unteren Seite des Buggys auf on stellen. Mit diesem Schalter kannst du die Motoren auch jederzeit ausschalten. from microbit import * pin0.write_analog(200) sleep(2000) pin0.write_analog(0) pin16.write_analog(100) sleep(2000) pin16.write_analog(0) Führe den gleichen Test auch mit dem rechten Motor durch, indem du die Pins 12 und 8 verwendest.
2. Tests mit den Lichtsensoren
Wenn sich der Buggy auf einer dunklen Unterlage befindet, leuchten zusätzlich die beiden roten LEDs auf, auf der hellen sind sie ausgeschaltet. Der linke Sensor ist an Pin1, der rechte an Pin2 angeschlossen. Dein Programm "pollt" die Spannung an diesen Anschlüssen und schreibt den Messwert im Terminal aus. from microbit import * while True: left = pin1.read_analog() right = pin2.read_analog() print("L: " + str(left) + " - R: " + str(right)) sleep(500)
3. Roboter steuern
from microbit import * while not button_a.was_pressed(): sleep(10) pin0.write_analog(150) pin12.write_analog(150) sleep(2000) pin12.write_analog(0) sleep(2000) pin12.write_analog(150) while True: left = pin1.read_analog() print(left) if left > 100: pin0.write_analog(0) pin12.write_analog(0) sleep(10)
4. Befehle aus dem Modul mbutils verwenden
from microbit import * from mbutils import * display.show(Image.YES) while not button_a.was_pressed(): sleep(10) buggy_setSpeed(15) buggy_forward() while not button_b.was_pressed(): if isDark(ldrL) and not isDark(ldrR): buggy_forward() elif isDark(ldrL) and isDark(ldrR): buggy_rightArc(0.6) elif not isDark(ldrL) and not isDark(ldrR): buggy_leftArc(0.6) sleep(10) buggy_stop() display.show(Image.NO)
5. Buggy mit einem zweiten micro:bit fernsteuern
Das Programm für den Buggy: from microbit import * from mbutils import * import radio radio.on() display.show(Image.YES) buggy_setSpeed(20) while True: rec = radio.receive() if rec == "FORWARD": buggy_forward() elif rec == "LEFT": buggy_leftArc(0.6) elif rec == "RIGHT": buggy_rightArc(0.6) elif rec == "STOP": buggy_stop() sleep(10) Das Programm für die Steuerung: import radio from microbit import * radio.on() display.show(Image.YES) state = "STOP" oldState = "" while True: if button_a.is_pressed() and button_b.is_pressed(): state = "FORWARD" elif button_a.is_pressed(): state = "LEFT" elif button_b.is_pressed(): state = "RIGHT" else: state = "STOP" if oldState != state: radio.send(state) oldState = state sleep(10) Das Programm für die Fernsteuerung ist ein typisches Beispiel für die Zustandsprogrammierung. Da der die Buttons in einer endlosen while-Schleife alle 10 Millisekunden überprüft werden, muss du darauf achten, dass nur bei einer Zustandsänderung (oldState != state) eine Message gesendet wird. Sonst wird alle 10 ms ein überflüssiger Befehl gesendet und damit das System unnötig belastet . |
MERKE DIR... |
Um ein komplexes System in Betrieb zu setzen, muss man einzelne Komponenten einem Test unterziehen und erst dann alle miteinander betreiben. Ein Motor bleibt so lange in einem Zustand, bis du ihn in einen anderen Zustand versetzt. Für die Steuerung kannst du auch Befehle aus dem Modul mbutils verwenden. |
ZUM SELBST LÖSEN |
|
Der micro:bit wurde von der BBC entwickelt, um die britischen Schülerinnen und Schülern für das Programmieren zu begeistern. Eine Million Siebtklässler in Grossbritanien wurden mit diesem Gerät ausgerüstet.
Zur Zeit sind zwei micro:bit-Versionen erhältlich: micro:bit V1.5 und miro:bit V2. Alle Programmbeispiele in diesem Lehrgang können mit beiden Versionen ausgeführt werden.
micro:bit V1.5 kostet ungefähr 20 Fr. , micro:bit V2 ist etwas teuerer.
Einige Bezugsquellen: