MQTT - OLED 128x64 Bricklet

Dies ist die Beschreibung der MQTT API Bindings für das OLED 128x64 Bricklet. Allgemeine Informationen über die Funktionen und technischen Spezifikationen des OLED 128x64 Bricklet sind in dessen Hardware Beschreibung zusammengefasst.

Eine Installationanleitung für die MQTT API Bindings ist Teil deren allgemeine Beschreibung.

Beispiele

Der folgende Beispielcode ist Public Domain (CC0 1.0).

Hello World

Download (example-hello-world.txt)

1
2
3
4
5
6
7
8
# Change XYZ to the UID of your OLED 128x64 Bricklet

setup:
    # Clear display
    publish '' to tinkerforge/request/oled_128x64_bricklet/XYZ/clear_display 
    
    # Write "Hello World" starting from upper left corner of the screen
    publish '{"line": 0, "position": 0, "text": "Hello World"}' to tinkerforge/request/oled_128x64_bricklet/XYZ/write_line 

Pixel Matrix

Download (example-pixel-matrix.txt)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
# Change XYZ to the UID of your OLED 128x64 Bricklet

setup:
    set WIDTH to 128
    set HEIGHT to 64

    # Clear display
    publish '' to tinkerforge/request/oled_128x64_bricklet/XYZ/clear_display 
    
    set pixels to create_pixel_pattern() # This function should create a checkerboard pattern as an array of booleans. See examples for other languages.
    
    set pages to create_pages_from_pixels() # This function should translate a pixel array to a page array, See drawMatrix in examples for other languages.
    
    set column_to to WIDTH - 1
    set row_to to HEIGHT / 8 - 1
    
    publish {"column_from": 0, "column_to": column_to, "row_from": 0, "row_to": row_to} to tinkerforge/request/oled_128x64_bricklet/XYZ/new_window
    
    for row in 0..HEIGHT/8:
        publish {"data": pages[row]} to tinkerforge/request/oled_128x64_bricklet/XYZ/write
    endfor

API

Alle veröffentlichten Payloads an die und von den MQTT-Bindings sind im JSON Format.

Falls ein Fehler auftritt, veröffentlichen die Bindings ein JSON-Objekt, das die Fehlermeldung als _ERROR-Member enthält. Das Objekt wird auf dem zugehörigen Antwort-Topic veröffentlicht: .../response/... für .../request/... und .../callback/... für .../register/....

Grundfunktionen

request/oled_128x64_bricklet/<UID>/write
Anfrage:
  • data – Typ: [int, ...], Länge: 64, Wertebereich: [0 bis 255]
Antwort:
  • keine Antwort

Fügt 64 Byte Daten zu dem mit request/oled_128x64_bricklet/<UID>/new_window gesetztem Fenster hinzu.

Jede Zeile hat eine Höhe von 8 Pixeln welche einem Byte Daten entsprechen.

Beispiel: Wenn request/oled_128x64_bricklet/<UID>/new_window mit Spalte (Column) von 0 bis 127 und Zeile (Row) von 0 bis 7 (das ganze Display) aufgerufen wird, schreibt jedes request/oled_128x64_bricklet/<UID>/write (roter Pfeil) eine halbe Zeile.

Display Pixel Reihenfolge

Das LSB (D0) von jedem Daten-Byte ist in der Zeile oben und das MSB (D7) ist in der Zeile unten.

Der nächste Aufruf von request/oled_128x64_bricklet/<UID>/write schreibt die zweite Hälfte der erste Zeile, und die nächsten beiden Aufrufe die zweite Zeile usw. Um das ganze Display zu füllen muss request/oled_128x64_bricklet/<UID>/write 16 mal aufgerufen werden.

request/oled_128x64_bricklet/<UID>/new_window
Anfrage:
  • column_from – Typ: int, Wertebereich: [0 bis 127]
  • column_to – Typ: int, Wertebereich: [0 bis 127]
  • row_from – Typ: int, Wertebereich: [0 bis 7]
  • row_to – Typ: int, Wertebereich: [0 bis 7]
Antwort:
  • keine Antwort

Setzt das Fenster in welches mit request/oled_128x64_bricklet/<UID>/write geschrieben werden kann. Eine Zeile (Row) hat eine Höhe von 8 Pixel.

request/oled_128x64_bricklet/<UID>/clear_display
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Löscht den aktuellen Inhalt des mit request/oled_128x64_bricklet/<UID>/new_window gesetztem Fensters.

request/oled_128x64_bricklet/<UID>/write_line
Anfrage:
  • line – Typ: int, Wertebereich: [0 bis 7]
  • position – Typ: int, Wertebereich: [0 bis 25]
  • text – Typ: string, Länge: bis zu 26
Antwort:
  • keine Antwort

Schreibt einen Text in die angegebene Zeile (0 bis 7) mit einer vorgegebenen Position (0 bis 25). Der Text kann maximal 26 Zeichen lang sein.

Beispiel: (1, 10, "Hallo") schreibt Hallo in die Mitte der zweiten Zeile des Displays.

Es ist möglich zuerst auf das Display mit request/oled_128x64_bricklet/<UID>/write zu malen und danach Text hinzuzufügen.

Das Display nutzt einen speziellen 5x7 Pixel Zeichensatz. Der Zeichensatz kann mit Hilfe von Brick Viewer angezeigt werden.

Fortgeschrittene Funktionen

request/oled_128x64_bricklet/<UID>/set_display_configuration
Anfrage:
  • contrast – Typ: int, Wertebereich: [0 bis 255], Standardwert: 143
  • invert – Typ: bool, Standardwert: false
Antwort:
  • keine Antwort

Setzt die Konfiguration des Displays

Es können der Kontrast mit einem Wertebereich von 0 bis 255 gesetzt, sowie die Farben (schwarz/weiß) des Displays invertiert werden.

request/oled_128x64_bricklet/<UID>/get_display_configuration
Anfrage:
  • keine Nutzdaten
Antwort:
  • contrast – Typ: int, Wertebereich: [0 bis 255], Standardwert: 143
  • invert – Typ: bool, Standardwert: false

Gibt die Konfiguration zurück, wie von request/oled_128x64_bricklet/<UID>/set_display_configuration gesetzt.

request/oled_128x64_bricklet/<UID>/get_identity
Anfrage:
  • keine Nutzdaten
Antwort:
  • uid – Typ: string, Länge: bis zu 8
  • connected_uid – Typ: string, Länge: bis zu 8
  • position – Typ: char, Wertebereich: ["a" bis "h", "i", "z"]
  • hardware_version – Typ: [int, ...], Länge: 3
    • 0: major – Typ: int, Wertebereich: [0 bis 255]
    • 1: minor – Typ: int, Wertebereich: [0 bis 255]
    • 2: revision – Typ: int, Wertebereich: [0 bis 255]
  • firmware_version – Typ: [int, ...], Länge: 3
    • 0: major – Typ: int, Wertebereich: [0 bis 255]
    • 1: minor – Typ: int, Wertebereich: [0 bis 255]
    • 2: revision – Typ: int, Wertebereich: [0 bis 255]
  • device_identifier – Typ: int, Wertebereich: [0 bis 216 - 1]
  • _display_name – Typ: string

Gibt die UID, die UID zu der das Bricklet verbunden ist, die Position, die Hard- und Firmware Version sowie den Device Identifier zurück.

Die Position 'a', 'b', 'c', 'd', 'e', 'f', 'g' oder 'h' (Bricklet Anschluss) sein. Der Raspberry Pi HAT (Zero) Brick ist immer an Position 'i' und das Bricklet hinter einem Isolator Bricklet ist immer an Position 'z'.

Eine Liste der Device Identifier Werte ist hier zu finden. Falls die symbolische Ausgabe nicht deaktiviert wurde, wird der Device Identifier auf den entsprechenden Namen im Format, welches die Topics verwenden, abgebildet.

Der Display Name enthält den Anzeigenamen des OLED 128x64.