HomeTurtlegrafikGPanelRobotik WebTigerPython |
Python - Online |
Deutsch English |
DU LERNST HIER... |
wie du eine Bluetooth-Kommunikation zwischen zwei Bluetooth-fähigen Robotern aufbauen kannst und wie du den Callibot fernsteuern kannst. |
SENDEN UND EMPFANGEN |
|
MUSTERBEISPIELE |
Beispiel 1: Button-Klick auf Calliope bewirkt eine Pfeilanzeige auf Callibot
Lade das Programm zuerst auf den Callibot und schalte die Stromversorgung ein. Dann kannst du das USB-Kabel wegnehmen und es für die Übertragung und Programmausführung auf dem zweiten Calliope verwenden. Mit radio.on() wird die Verbindung aufgebaut. Danach wartet in einer endlosen Schleife jedes Gerät, ob ein Button gedrück wird (dann sendet es eine Message), oder ob es eine Message erhält (dann führt es den entsprechenden Befehl aus). Programm: import radio from calliope_mini import * radio.on() while True: if button_a.was_pressed(): radio.send("left") elif button_b.was_pressed(): radio.send("right") rec = radio.receive() if rec != None: if rec == "left": display.show(Image.ARROW_E) elif rec == "right": display.show(Image.ARROW_W) sleep(10)
Da du den fahrenden Callibot-Roboter steuern willst, verwendest du in diesem Beispiel den Calliope (oder micro:bit) als Sender und den Callibot als Empfänger. Da der Sender nicht alle Callibot-Befehle braucht und umgekehrt, ist es sinnvoll, zwei verschiedene Programme zu verwenden. Die Steuerung erfolgt wie folgt:
Die sogenannte Zustandsprogrammierung ist in diesem Beispiel sehr sinnvoll. Es hat keinen Sinn alle 10 Millisekunden eine Message "FORWARD" zu senden, wenn der andere Roboter bereits geradeaus fährt. Eine Massage wird nur dann geschickt, wenn der Zustand geändert hat (oldState != state). Programm für den Sender: import radio from calliope_mini 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) Auf dem Callibot wird nach dem Programmstart ein "Ok"-Zeichen angezeigt, damit du weisst, dass er bereits ist. Danach wartet er auf die Befehle, die er via Bluetooth empfängt. Falls er Message "FORWARD" erhält, führt er den Befehl forward() aus und bleibt in diesem Zustand, bis er eine neue Message erhält. Mit "LEFT" bewegt er sich auf einem Linksbogen, mit "STOP" hält er an. Programm für den Empfänger: from callibot import * from calliope_mini import * import radio radio.on() display.show(Image.YES) while True: rec = radio.receive() if rec == "FORWARD": forward() elif rec == "LEFT": leftArc(0.1) elif rec == "RIGHT": rightArc(0.1) elif rec == "STOP": stop() sleep(10) Damit du dich mit dem Steuergerät frei bewegen kannst, kannst du nach dem Programmdownload für Stromversorgung des Calliope eine Powerbank verwenden. |
MERKE DIR... |
Damit du die Befehle für die Bluetooth-Kommunikation verwenden kannst, musst du das Modul radio importieren. Mit radio.on() wird die Verbindung aufgebaut. Mit radio.send(msg) wird eine Message verschickt, mit radio.receive() wird sie am anderen Gerät empfangen und in einem Empfangsbuffer so lange gespeichert, bis man sie abgeholt hat. |
ZUM SELBST LÖSEN |
|