TigerJython | xx für Gymnasien |
Module imports: | from simraspi import * |
from raspibrick import * |
Spickzettel (die wichtigsten Python-Befehle)
Methode | Aktion |
Robot() | erzeugt Roboter-Instanz (ohne Motoren) und stellt die Verbindung zum Roboter her |
Robot(ip) | dasselbe, aber verbindet ohne Abfragedialog mit geg. IP-Adresse/Alias (String) |
exit() | stoppt den Roboter, gibt alle Ressourcen frei und beendet die Verbindung |
getIPAdresses()() | gibt die IP-Adressen des Roboters zurück |
isEscapeHit() | True, falls Push-Button (autonom) bzw. Tastaturtaste Esc (Remote-Modus) gedrückt wurde |
isLeftHit() | True, falls Tastaturtaste Cursor-Left gedrückt (nur Remote-Modus) |
isRightHit() | True, falls Tastaturtaste Cursor-Right gedrückt (nur Remote-Modus) |
isUpHit() | True, falls Tastaturtaste Cursor-Up gedrückt (nur Remote-Modus) |
isDownHit() | True, falls Tastaturtaste Cursor-Down gedrückt (nur Remote-Modus) |
playTone(frequency, duration) | spielt einen Ton mit geg, Frequenz (in Hz) in Länge (ms) |
setSoundVolume(volume) | setzt die Lautstärke für alle Tonausgaben (0..100) |
Gear() | erzeugt ein Fahrwerk mit 2 synchronisierten Motoren |
backward() | fährt rückwärts (nicht-blockierende Methode) |
backward(ms) | fährt während gegebener Zeit (in ms) rückwärts und stoppt (blockierende Methode) |
forward() | fährt vorwärts (nicht blockierende Methode) |
forward(ms) | fährt während gegebener Zeit (in ms) vorwärts und stoppt (blockierende Methode) | left() | dreht links (nicht blockierende Methode) |
left(ms) | dreht während gegebener Zeit (in ms) links und stoppt (blockierende Methode) |
leftArc(radius) | fährt auf einem Linksbogen mit geg. Radius (in m) (nicht- blockierende Methode) |
leftArc(radius, ms) | fährt während geg. Zeit (in ms) auf einem Linksbogen und stoppt (blockierende Methode) |
right() | dreht rechts (nicht-blockierende Methode) |
right(ms) | dreht während gegebener Zeit (in ms) rechts und stoppt (blockierende Methode) |
rightArc(radius) | fährt auf einem Rechtsbogen mit geg. Radius (in m) (nicht blockierende Methode) |
rightArc(radius, ms) | fährt während geg. Zeit (in ms) auf einem Rechtsbogen und stoppt(blockierende Methode) |
setSpeed(speed) | setzt die Geschwindigkeit (0..100) (erst beim nächsten Bewegungsbefehl übernommen) |
stop() | stoppt das Fahrwerk |
Motor(MOTOR_LEFT) | erzeugt eine Instanz des den linken Motor |
Motor(MOTOR_RIGHT) | erzeugt eine Instanz des rechten Motor |
backward() | startet die Rückwärtsdrehung |
forward() | startet die Vorwärtsdrehung |
setSpeed(speed) | setzt die Geschwindigkeit (0..100) (erst beim nächsten Bewegungsbefehl übernommen) |
stop() | stoppt den Motor |
LightSensor(id) | erzeugt eine Instanz eines Lichtsensors mit geg. id (LS_FRONT_LEFT=0, LS_FRONT_RIGHT=1, LS_REAR_LEFT=2, LS_REAR_RIGHT=3) |
LightSensor(id, bright = onBright, dark = onDark) | dasselbe mit registrierten Event-Callbacks onBright(id, value), onDark(id, value) beim Überqueren des Triggerlevels |
LightSensor(id, True) | (nur Simulationsmodus) erzeugt eine Instanz eines aufwärts gerichteten Lichtsensors mit geg. id (LS_FRONT_LEFT=0, LS_FRONT_RIGHT=1, LS_REAR_LEFT=2, LS_REAR_RIGHT=3) |
LightSensor(id, True, bright = onBright, dark = onDark) |
dasselbe mit registrierten Event-Callbacks onBright(id, value), onDark(id, value) beim Überqueren des Triggerlevels |
getValue() | gibt den gemessenen Wert des Lichtsensors zurück (0..255) |
setTriggerLevel(level) | setzt neuen Triggerlevel |
UltrasonicSensor() | erzeugt eine Instanz eines Ultraschallsensors |
UltrasonicSensor(far = onFar, near = onNear) |
dasselbe mit registrierten Event-Callbacks onFar(d), onNear(d) beim Überqueren des Triggerlevels |
getValue() | gibt die Entfernung zurück (in cm, -1 für Fehler) |
setTriggerLevel(level) | setzt neuen TriggerLevel (default Wert ist 20) |
InfraredSensor(id) | erzeugt eine Instanz eines Infrarot Sensors mit geg. id (IR_CENTER = 0, IR_LEFT = 1, IR_RIGHT = 2, IR_LINE_LEFT = 3, IR_LINE_RIGHT = 4) |
InfraredSensor(id, activated = onActivated, passivated = onPassivated) |
dasselbe mit registrieren Event-Callbacks onActivated(id), onPassivated(id) |
getValue() | gibt 1 zurück, wenn der Sensor reflektiertes Licht registriert, sonst 0 |
setTriggerLevel(level) | setzt neuen Triggerlevel |
Beeper() | erzeugt eine Instanz eines Beepers (aktiver Buzzers zwischen GPIO-Port 40 und Ground angeschlossen, Polarität beachten!) |
Beeper(pin = 40) | dasselbe, aber am angegebenen GPIO-Port angeschlossen |
turnOn() | schaltet den Beeper an |
turnOff() | schaltet den Beeper ab |
start(onTime, offTime, count = 0, blocking = False) | startet Ein-Ausschaltzyklus mit der Einschaltzeit onTime (ms), Ausschaltzeit offTime (ms), Anzahl Perioden count (default: 0: endlos). Mit blocking = True blockiert der Aufruf, bis alle Zyklen gespielt sind, sonst kehrt der Aufruf nach Start des Zyklus zurück (default: False) |
stop() | beendet den Spielzyklus |
setOnTime(onTime) | setzt die Einschaltzeit (auch während des Spielens) (in ms) |
setOffTime(offTime) | setzt die Ausschaltzeit (auch während des Spielens) (in ms) |
setOnOffTime(onTime, offTime) | setzt Ein- und Ausschaltzeit (auch während des Spielens) (in ms) |
isBeeping() | liefert True, falls der Spielzyklus noch im Gang ist |
beep(count = 1) | kurzes Piepen mit count Perioden (default: 1) |
Led(id) | erzeugt eine Instanz eines LED-Paars mit der geg. id (LED_FRONT = 0, LED_LEFT = 1, LED_REAR = 2, LED_RIGHT = 3) |
setColor(red, green, blue) | schaltet ein LED-Paar in der gegebenen RGB-Farbe ein (Farbkomponenten 0 ...255) |
setColor(colorStr) | dasselbe mit X11-Color-String |
startBlinker(onColorStr, offColorStr, onTime, offTime, count, blocking=False) | startet Blinker mit onColorStr(X11-Color-String) und den Zeiten onTime, offTime(in ms), count: Anzahl Einschltungen (0: endlos). Kehrt sofort zurück, falls blocking = False, sonst blockierend, bis Blinken fertig |
stopBlinker() | stoppt Blinker und schaltet LEd ab |
isBlinkerAlive() | True, falls Blinker noch aktiv |
Led.setColorAll(red, green, blue) | schaltet alle 8 LEDs in der gegebenen RGB-Farbe (statische Methode) |
Led.clearAll() | schaltet alle LEDs aus (statische Methode) |
Camera() | erzeugt eine Instanz einer Raspberry Pi Kamera |
captureJPEG(width, height) | nimmt ein Bild mit der geg. Pixelaufösung auf und gibt es als String im JPEG Format zurück |
saveData(data, filename) | schreibt den Inhalt von data byteweise in eine binäre Datei (z.B. ein Bild im JPEG Format) |
captureAndSave(width, height, filename) | nimmt ein Bild mit der geg. Pixelaufösung auf und speichert es im JPEG Format im Linux-Dateisystem des Raspi |
captureAndTransfer(width, height) | (nur remote mode) nimmt ein Bild mit der geg. Pixelaufösung auf, transferiert es auf den remote Device und gibt es als String im JPEG Format zurück |
readImage(jpeg) | Wandelt ein Bild als JPEG String in eine in GPanel verwendbare Bitmap um (from gpanel import *) |
ServoMotor(id, home, inc) | erzeugt eine Instanz eines Servomotors mit geg. id. (Stecker S12:id=0, S13:id=1, S14:id =2; S15:id=3). home: PWM duty cycle für Homeposition (0..4095), inc: duty/position-Faktor. Setzt Motor auf Homeposition |
setPos(pos) | setzt relative Position des Motors (pos <> 0 von Homeposition aus) |
setPosAbs(pos) | setzt absolute Position des Motors (PWM duty cycle 0..4095) |
setHome() | setzt Motor auf Homeposition |
Display() | erzeugt eine Instanz eines 7-Segment-Displays |
clear() | löscht das Display (und stoppt den Display-Multiplexer) |
clearDigit(digit) | löscht die gegebene Position (0: ganz rechts, 3: ganz links) |
getDisplayableChars() | gibt einen String mit allen auf dem Display darstellbaren Zeichen zurück |
isAvailable() | gibt True zurück, falls das Display angeschlossen ist, andernfalls False |
isTickerAlive()() | gibt True zurück, falls der Ticker angezeigt wird, sonst False |
setScrollableText(text, pos=0) | setzt den scrollbaren Text so, dass das Zeichen mit Index pos ganz links ist |
scrollToLeft() | scrollt den Text um einen Schritt nach links |
scrollToRight() | scrollt den Text um einen Schritt nach rechts |
setToStart() | zeigt den scrollbaren Text an der Startposition |
showText(text, pos=0, dp=[0, 0, 0, 0]] | zeigt den gegebenen Text an. Optional Position pos und Dezimalpunkte dp als Liste mit 0 oder 1 |
showBlinker(text, count=1, speed=2, blocking=False) | zeigt den Tickertext scrollend nach links, bis die letzten 4 Zeichen angezeigt sind. count: Anzahl Wiederholungen; speed: Scrollgeschwindigkeit; blocking: blockierend, bis Ticker beendet ist |
showTicker(text, count=1, speed=2, blocking=False) |
zeigt den Tickertext scrollend nach links, bis die letzten 4 Zeichen angezeigt sind. |
stopBlinker() | stoppt den laufenden Blinker |
stopTicker() | stoppt den laufenden Ticker |
OLED1306() | erzeugt eine Instanz eines alphanumerischen OLED-Displays mit 128x64 pixels (mit SSD1306 Chip), der an I2C angeschlossen ist (Adresse 0x3C) |
OLED1306(filename) | dasselbe, aber mit angegebenen Hintergrundbild (ppm-Format 128x64 B/W). (Nur autonomer Modus) |
setBkImage(filename) | wählt das Hintergrundbild (ppm-Format 128x64 B/W). None: ein bestehendes Bild wird entfernt (nur autonomer Modus) |
setFont(ttfFile, fontSize) | entnimmt das Font der angegenenen TTF-Fontdatei (nur autonomer Mode) |
setFontSize(fontSize) | setzt die Schriftgrösse (in pixel) |
setText(text, lineNum, fontSize = None, indent = 0) | schreibt den Text text auf die Zeilennummer lineNum (0, 1,...) mit der gewählten Schriftgrösse in pixel (default: None: aktueller Wert). Der Text wird um indent pixels eingerückt (default: 0) |
println(text) | fügt den Text mit einem Zeilenumbruch in den Textbuffer und zeigt diesen an. Der Text wird im Fenster bei Bedarf nach oben gescrollt, damit die letzte Zeile sichtbar bleibt |
clear() | löscht den Display und den Textbuffer |
setInverse(inverse = True) | wählt schwarze Pixel auf weissem Hintergrund |
startBlinker(count = 3, offTime = 1000, onTime = 1000, blocking = False) | startet einen Blinkzyklus mit count Perioden, der Ausschaltzeit offTime (ms) und der Einschaltzeit onTime (ms). Falls blocking = True blockierend, bis Zyklus beendet |
stopBlinker() | beendet einen laufenden Blinkzyklus |
isBlinking() | liefert True, falls Blinkzyklus läuft |
Tools:
delay(time) | hält das Programm während der Zeit time (in Millisekunden) an |
setStartDirection(angle) | setzt die Startrichtung des Roboters (0 gegen Osten, positiv im Uhrzeigersinn) |
setStartPosition(x, y) | setzt die Startposition des Roboters (Pixelkoordinaten, Nullpunkt oben links |
showStatusBar(height) | fügt eine Statusbar mit gegebener Höhe unten am Fenster an |
setStatusText(text) | setzt den Statustext (alter Text wird gelöscht) |
useBackground(filename) | fügt ein Hintergrundbild für den Lichtsensor ein |
useObstacle(filename, x, y) | fügt ein Hindernis für den Infrarotsensor an der Position (x, y) ein |
useTarget(filename, mesh, x, y) | fügt ein Target für den Ultraschallsensor an der Position (x, y) ein |
useTorch(power, x, y, z) | fügt eine mausverschiebbare Lampe (Punktlichtquelle) mit gegebener Leistung an gegebener Position ein (z: Höhe) (wird für aufwärts gerichtete Lichtsensoren verwendet) |
useShadow(ulx, uly, lrx, lry) | fügt einen rechteckigen Schatten mit gegebenen oberen linken/unteren rechten Ecken ein (absorbiert das Licht von Lampen) |
Module import: from tcpcom import *
Klasse TCPServer
server = TCPServer(port, stateChanged, isVerbose = False) | erzeugt einen TCP-Socket-Server, der auf dem TCP-Port port auf Clients hört. Zustandsänderungen rufen stateChanged() auf. Für isVerbose = True werden Debug-Messages ausgeschrieben |
stateChanged(state, msg) | Callback, der bei Zustandsänderungen aufgerufen wird. |
server.isConnected() | True, falls ein Client mit dem Server verbunden ist |
server.disconnect() | beendet die Verbindung mit dem Client und geht in den LISTENING-Zustand |
server.terminate() | beendet die Verbindung und den LISTENNG-Zustand, gibt den IP-Port frei |
server.isTerminated() | True, falls der Server im TERMINATED-Zustand ist |
server.sendMessage(msg) | sendet die Information msg zum Client (als String, das Zeichen \0 (ASCII 0) dient als Endzeichen, automatisch transparent hinzugefügt und wieder entfernt). |
TCPServer.getVersion() | gibt die Version des Moduls als String zurück |
client = TCPClient(ipAddress, port, stateChanged, isVerbose = False) | erzeugt einen TCP-Socket-Client, der für eine Verbindung mit einem TCPServer mit der IP-Adresse ipAddress (String) und dem TCP-Port port vorbereitet ist. Zustandsänderungen rufen stateChanged() auf. Für isVerbose = True werden Debug-Messages auf der Console ausgeschrieben |
stateChanged(state, msg) | Callback, der bei Zustandsänderungen aufgerufen wird. state: TCPClient.CONNECTING, msg: IP Adresse des Servers state: TCPClient.CONNECTION_FAILED, msg: IP Adresse des Servers state: TCPClient.CONNECTED, msg: IP Adresse des Serveres state: TCPClient.SERVER_OCCUPIED, msg: IP Adresse des Serveres state: TCPClient.DISCONNECTED, msg: leer state: TCPClient.MESSAGE, msg: vom Server erhaltene Message (String) |
client.connect() | erstellt eine Verbindung zum Server (blockierend bis Timeout). Gibt True zurück, falls die Verbindung zustande gekommen ist, sonst wird False zurückgegeben |
client.connect(timeout) | dasselbe, aber Angabe des Timeouts (in s) für den Verbindungsversuch |
client.isConnecting() | True, während der Client einen Connect-Versuch unternimmt |
client.isConnected() | True, falls der Client mit einem Server verbunden ist |
client.disconnect() | beendet die Verbindung mit dem Server |
client.sendMessage(msg, responseTime) | sendet die Information msg zum Server (als String, das Zeichen \0 (ASCII 0) dient als Endzeichen, automatisch transparent hinzugefügt und wieder entfernt). Für responseTime > 0 ist die Methode blockierend und erwartet innerhalb von responseTime (in s) eine Antwort. Die Antwort wird als Rückgabewert geliefert. Falls die Antwort nicht ankommt, wird None zurückgegeben |
TCPClient.getVersion() | gibt die Version des Moduls als String zurück |
Vollständige Dokumentation : | RaspiPyLib (Python Doc) |
RaspiJLib (JavaDoc) | |
RaspiSim (JavaDoc, simulation mode) | |
Zustandsauswahl und LED/Display-Anzeigen der RaspiBrick Firmware
Zustand |
Einschalten |
Suche Access Point (AP) |
AP gefunden |
AP nicht gefunden |
Bereit |
BrickGate-Server läuft und wartet auf einen Client |
BrickGate-Server hat Verbindung mit einem Client |
Anzeige |
leer |
AP-- |
Ticker: |
Ticker: |
IdLE |
HOLd |
kurze Anzeige von Conn, dann leer (frei für User-Programm) |
LEDs |
dunkel |
weiss |
grün |
gelb |
blau |
grün blinkend |
dunkel (frei für User- Programm) |
Mögliche Aktionen |
Warten |
Abbrechen mit Tastenklick |
Abbrechen mit Tastenklick |
Abbrechen mit Tastenklick |
Tastenklick startet autonomes Python-Programm, langes Tastenhalten startet BrickGate-Server |
Tastenklick startet autonomes Java-Programm, langes Tastenhalten stoppt BrickGate-Server |
frei für User-Programm |
Herunterfahren ausgehend vom Zustand "IdLE"
Zustand |
IdLE |
Shutdown "Are you sure?" |
Shutdown bestätigt |
Shutdown abgebrochen |
Anzeige |
IdLE |
oooo |
BYE. |
IdLE |
LEDs |
blau |
rot |
dunkel und dann schwach rot |
blau |
Mögliche Aktionen |
Langes Tastenhalten und FRONT-IR Sensor gleichzeitig aktiviert |
Bestätigen: Tastenklick und aktivierter IR Sensor |
Warten, bis grüne LED des Raspberry Pi nicht mehr blinkt. Dann ausschalten |
Normal weiterverwenden |