TigerJython | xx für Gymnasien |
Im Remote-und Simulationsmodus kann der Roboter mitt den Cursor-Tasten und den Tasten Escape und Enter wie mit einer Fernsteuerung bewegt werden. Die Funktionen isUpHit(), isDownHit(), isLeftHit(), isRightHit(), isEnterHit() und isEscapeHit() geben True zurück, wenn die entsprechende Taste gedrückt wurde. Die Aktionen, die das Drücken dieser Tasten auslösen soll, werden im Programm festgelegt. Die folgenden Beispiele können nur im Remote- Modus ausgeführt werden, d.h. auf dem Raspi muss mit langem Drücken der Taste das Brickgate-Programm gestartet werden (auf dem Display erscheint Hold)..
Beispiel 1: Roboter mit den Tastaturtasten steuern Die Tasten werden wie folgt belegt:
|
Tastaturtasten |
Erklärungen zum Programmcode:
if isUpHit(): Die nachfolgende Anweisung wird ausgeführt, wenn die Taste UP gedrückt wurde. Analog beim Drücken der Tasten DOWN, LEFT, RIGHT und ENTER. Man nennt dieses Verfahren auch "pollen" der Tasten. Es wird allerdings nicht genau zum Zeitpunkt des Aufrufs die Taste abgefragt, sondern ein Tastenflag, das gesetzt wird, wenn irgend einmal vor dem Aufruf die Taste gedrückt wurde. |
Beispiel 2: Roboter durch eine Hindernisbahn steuern Die Hindernisbahn besteht aus senkrecht aufeinander stehenden Wegstücken. Mit den Cursortasten LEFT / RIGHT dreht der Roboter jeweils in die entsprechende Richtung. Die Drehung kann mit der Taste DOWN beendet werden. Die Tastenbelegung:
|
Erklärungen zum Programmcode:
isLeftHit(): Der Roboter dreht nach links so lange bis die Taste DOWN gedrückt wird. Mit der Taste DOWN kann auch Vorwärtsbewegung und Rechtsdrehung gestoppt werden. |
Beispiel 3: Geschwindigkeit mit den Taste UP und DOWN ändern Die Tastenbelegung:
|
Erklärungen zum Programmcode:
speed += 5: die im Programm gespeicherte Geschwindigkeitswert wird um 5 vergrössert. Danach muss mit setSpeed(speed) die Geschwindigkeit auf den neuen Wert gesetzt werden. Dieser wird aber vom Roboter erst beim nächsten Aufruf einer Bewegungsfunktion (hier forward()) wirklich übernommen |
Beispiel 4: Roboter mit Smartphone steuern
Der direkte Modus von RaspiBrick ist perfekt angepasst, um die Motoren von einem entfernten Gerät zu steuern. Die Android-App RaspiPilot.apk wurde dem Framework JDroidLib erstellt. Man kann die fertige App mit dem untenstehendem Link oder mit dem QR-Code herunterladen und auf ihrem Smartphone installieren. Mehr Informationen zur Android-Programmierung findet man auf unserer Android-Webseite www.jdroid.ch. Der Raspi und das Smartphone müssen mit dem gleichen Router verbunden sein und auf dem Raspi muss der Brickgate-Programm gestartet sein (Taste so lange drücken bis Hold erscheint). Nach dem Start der Android-App auf dem Smartphon erscheint eine Dialogbox, in welcher die IP-Adresse des Raspi eingegeben werden kann. Danach erschein das nebenstehende GUI-Programm, mit welchen der Raspi gesteuert werden kann. App installieren auf Smartphone oder Tablet |
Aufgaben Serie 4: |
1) |
Schreibe ein Programm, mit welchen du den Roboter mit den Cursortasten LEFT und RIGHT durch den Slalomparcours steuern kannst. Mit der Taste ENTER wird der Lauf beendet. |
|
|
2) |
Der Roboter bewegt sich auf einer Kreisbahn. Mit der Taste DOWN wird er angehalten, mit der Taste UP setzt er die Bewegung fort. Mit der Taste ESCAPE wird das Programm beendet. |
|
|
3) |
Eine Hindernisbahn besteht aus gleich langen, rechtwinklig zueinander stehenden Wegstücken. Bestimme zuerst durch Probieren, wie lange der Roboter forwärts fahren muss, um ein solches Wegstück abzufahren. Dann kannst du den Roboter nur mit zwei Tasten LEFT und RIGHT steuern. Der Roboter fährt nach dem Start die erste Strecke vorwärts und wartet, bis du die Taste LEFT bzw. RIGHT gedrückt hast. Dann dreht er um 90° links bzw. rechts und fährt das nächste gerade Stück vorwärts. Für die Simulation kannst du das Hintergrundbild bg.gif verwenden. welches im Programm unter RobotContext eingeführt wird. from raspisim import*
RobotContext.setStartPosition(320, 480)
RobotContext.useBackground("sprites/bg.gif")
robot = Robot()
gear = Gear()
robot.addPart(gear)
....
|