TigerJython xx
für Gymnasien

Dokumentation RaspiBrick Robotik

Module imports: from simraspi import *
  from raspibrick import *

Spickzettel (die wichtigsten Python-Befehle)

Sprites-Bibliothek

Robot:
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:
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(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:
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:
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:
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:
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:
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:
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:
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:
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.
count: Anzahl Wiederholungen; speed: Scrollgeschwindigkeit; blocking: blockierend, bis Ticker beendet ist

stopBlinker() stoppt den laufenden Blinker
stopTicker() stoppt den laufenden Ticker

OLED1306:
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

RobotContext (nur Simulation)
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.
state: TCPServer.PORT_IN_USE, msg: port
state: TCPServer.CONNECTED, msg: IP Adresse des Clients
state: TCPServer.LISTENING, msg: leer
state: TCPSever.TERMINATED, msg: leer
state: TCPServer.MESSAGE, msg: vom Client erhaltene Message (String)

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

Klasse TCPClient
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
(falls vorhanden)

leer

AP--

Ticker:
#nnn.nnn.nnn.nnn

Ticker:
#0-0-0-0

IdLE

HOLd

kurze Anzeige von  Conn, dann leer (frei für User-Programm)

LEDs
(neben Taste)

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 mit aktivierten vorderen IR-Sensor zeigt die IP-Adresse

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
Abbrechen: Tastenklick ohne IR Sensor

Warten, bis grüne LED des Raspberry Pi nicht mehr blinkt. Dann ausschalten

Normal weiterverwenden