MQTT - LCD 20x4 Bricklet

Dies ist die Beschreibung der MQTT API Bindings für das LCD 20x4 Bricklet. Allgemeine Informationen über die Funktionen und technischen Spezifikationen des LCD 20x4 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 LCD 20x4 Bricklet

setup:
    # Turn backlight on
    publish '' to tinkerforge/request/lcd_20x4_bricklet/XYZ/backlight_on

    # Write "Hello World"
    publish '{"line": 0, "position": 0, "text": "Hello World"}' to tinkerforge/request/lcd_20x4_bricklet/XYZ/write_line

Button Callback

Download (example-button-callback.txt)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# Change XYZ to the UID of your LCD 20x4 Bricklet

setup:
    # Handle incoming button pressed callbacks
    subscribe to tinkerforge/callback/lcd_20x4_bricklet/XYZ/button_pressed
    publish '{"register": true}' to tinkerforge/register/lcd_20x4_bricklet/XYZ/button_pressed # Register button_pressed callback

    # Handle incoming button released callbacks
    subscribe to tinkerforge/callback/lcd_20x4_bricklet/XYZ/button_released
    publish '{"register": true}' to tinkerforge/register/lcd_20x4_bricklet/XYZ/button_released # Register button_released callback

Unicode

Download (example-unicode.txt)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Change XYZ to the UID of your LCD 20x4 Bricklet

setup:
    # Turn backlight on
    publish '' to tinkerforge/request/lcd_20x4_bricklet/XYZ/backlight_on

    function UTF8ToKS006U # This function should convert strings from UTF-8 to the LCD charset. See examples for other languages.

    # Write some strings using the FIXME function to map to the LCD charset
    publish '{"line": 0, "position": 0, "text": UTF8ToKS0066U("Stromstärke: 17µA")}' to tinkerforge/request/lcd_20x4_bricklet/XYZ/write_line
    publish '{"line": 1, "position": 0, "text": UTF8ToKS0066U("Temperatur:  23°C"}' to tinkerforge/request/lcd_20x4_bricklet/XYZ/write_line

    # Write a string directly including characters from the LCD charset
    publish '{"line": 2, "position": 0, "text": "Drehzahl: 750min\u00e9"}' to tinkerforge/request/lcd_20x4_bricklet/XYZ/write_line

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/lcd_20x4_bricklet/<UID>/write_line
Anfrage:
  • line – Typ: int, Wertebereich: [0 bis 3]
  • position – Typ: int, Wertebereich: [0 bis 19]
  • text – Typ: string, Länge: bis zu 20
Antwort:
  • keine Antwort

Schreibt einen Text in die angegebene Zeile mit einer vorgegebenen Position. Der Text kann maximal 20 Zeichen lang sein.

Beispiel: (0, 7, "Hallo") schreibt Hallo in die Mitte der ersten Zeile des Display.

Das Display nutzt einen speziellen Zeichensatz der alle ASCII Zeichen beinhaltet außer Backslash und Tilde. Der Zeichensatz des LCD beinhaltet weiterhin einige Nicht-ASCII Zeichen, siehe die Zeichensatzspezifikation für Details. Das gezeigte Unicode Beispiel verdeutlicht die Verwendung von Nicht-ASCII Zeichen und wie die Wandlung von Unicode in den LCD Zeichensatz möglich ist.

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

Löscht alle Zeichen auf dem Display.

request/lcd_20x4_bricklet/<UID>/backlight_on
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Aktiviert die Hintergrundbeleuchtung.

request/lcd_20x4_bricklet/<UID>/backlight_off
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Deaktiviert die Hintergrundbeleuchtung.

request/lcd_20x4_bricklet/<UID>/is_backlight_on
Anfrage:
  • keine Nutzdaten
Antwort:
  • backlight – Typ: bool

Gibt true zurück wenn die Hintergrundbeleuchtung aktiv ist, sonst false.

Fortgeschrittene Funktionen

request/lcd_20x4_bricklet/<UID>/set_config
Anfrage:
  • cursor – Typ: bool, Standardwert: false
  • blinking – Typ: bool, Standardwert: false
Antwort:
  • keine Antwort

Konfiguriert ob der Cursor (angezeigt als "_") sichtbar ist und ob er blinkt (angezeigt als blinkender Block). Die Cursor Position ist ein Zeichen hinter dem zuletzt mit request/lcd_20x4_bricklet/<UID>/write_line geschriebenen Text.

request/lcd_20x4_bricklet/<UID>/get_config
Anfrage:
  • keine Nutzdaten
Antwort:
  • cursor – Typ: bool, Standardwert: false
  • blinking – Typ: bool, Standardwert: false

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

request/lcd_20x4_bricklet/<UID>/is_button_pressed
Anfrage:
  • button – Typ: int, Wertebereich: [0 bis 3]
Antwort:
  • pressed – Typ: bool

Gibt true zurück wenn die Taste (0 bis 2 oder 0 bis 3 seit Hardware Version 1.2) gedrückt ist.

Wenn auf Tastendrücken und -loslassen reagiert werden soll, wird empfohlen die register/lcd_20x4_bricklet/<UID>/button_pressed und register/lcd_20x4_bricklet/<UID>/button_released Callbacks zu nutzen.

request/lcd_20x4_bricklet/<UID>/set_custom_character
Anfrage:
  • index – Typ: int, Wertebereich: [0 bis 7]
  • character – Typ: [int, ...], Länge: 8, Wertebereich: [0 bis 31]
Antwort:
  • keine Antwort

Das LCD 20x4 Bricklet kann bis zu 8 benutzerdefinierte Buchstaben speichern. Die Buchstaben bestehen aus 5x8 Pixel und sie können über den Index 0-7 adressiert werden. Um die Pixel zu beschreiben, werden die ersten 5 Bit von 8 Bytes verwenden. Zum Beispiel, um den Buchstaben "H" zu erzeugen, sollte das folgende Array gesendet werden:

  • character[0] = 0b00010001 (Dezimalwert 17)
  • character[1] = 0b00010001 (Dezimalwert 17)
  • character[2] = 0b00010001 (Dezimalwert 17)
  • character[3] = 0b00011111 (Dezimalwert 31)
  • character[4] = 0b00010001 (Dezimalwert 17)
  • character[5] = 0b00010001 (Dezimalwert 17)
  • character[6] = 0b00010001 (Dezimalwert 17)
  • character[7] = 0b00000000 (Dezimalwert 0)

Die Buchstaben können später mit request/lcd_20x4_bricklet/<UID>/write_line mit den chars mit den Byterepräsentationen 8 ("\x08" oder "\u0008") bis 15 ("\x0F" oder "\u000F") geschrieben werden.

Es ist möglich die benutzerdefinierten Buchstaben im Brick Viewer ab Version 2.0.1 einzustellen.

Benutzerdefinierte Buchstaben werden vom LCD im RAM gespeichert, daher müssen sie nach jedem Start des LCD 20x4 Bricklets gesetzt werden.

Neu in Version 2.0.1 (Plugin).

request/lcd_20x4_bricklet/<UID>/get_custom_character
Anfrage:
  • index – Typ: int, Wertebereich: [0 bis 7]
Antwort:
  • character – Typ: [int, ...], Länge: 8, Wertebereich: [0 bis 31]

Gibt den benutzerdefinierten Buchstaben für den gegebenen Index zurück, wie von request/lcd_20x4_bricklet/<UID>/set_custom_character gesetzt.

Neu in Version 2.0.1 (Plugin).

request/lcd_20x4_bricklet/<UID>/set_default_text
Anfrage:
  • line – Typ: int, Wertebereich: [0 bis 3]
  • text – Typ: string, Länge: bis zu 20
Antwort:
  • keine Antwort

Setzt den Standard-Text für die Zeilen 0-3. Die maximale Anzahl an Buchstaben pro Zeile ist 20.

Der Standard-Text wird auf dem LCD angezeigt, wenn der Standard-Text-Zähler ausläuft, siehe request/lcd_20x4_bricklet/<UID>/set_default_text_counter.

Neu in Version 2.0.2 (Plugin).

request/lcd_20x4_bricklet/<UID>/get_default_text
Anfrage:
  • line – Typ: int, Wertebereich: [0 bis 3]
Antwort:
  • text – Typ: string, Länge: bis zu 20

Gibt den Standard-Text für die Zeilen 0-3 zurück, wie von request/lcd_20x4_bricklet/<UID>/set_default_text gesetzt.

Neu in Version 2.0.2 (Plugin).

request/lcd_20x4_bricklet/<UID>/set_default_text_counter
Anfrage:
  • counter – Typ: int, Einheit: 1 ms, Wertebereich: [-231 bis 231 - 1], Standardwert: -1
Antwort:
  • keine Antwort

Setzt den Standard-Text-Zähler. Der Zähler wird von der LCD Firmware einmal pro ms dekrementiert. Wenn der Zähler 0 erreicht wird der Standard-Text auf dem LCD angezeigt (siehe request/lcd_20x4_bricklet/<UID>/set_default_text).

Diese Funktionalität kann genutzt werden um auf dem LCD einen Text anzuzeigen falls das kontrollierende Programm abstürzt oder die Verbindung unterbrochen wird.

Ein möglicher Ansatz dafür ist request/lcd_20x4_bricklet/<UID>/set_default_text_counter einmal pro Minute mit dem Parameter 1000*60*2 (zwei Minuten) aufzurufen. In diesem Fall wird dann der Standard-Text nach spätestens zwei Minuten angezeigt wenn das kontrollierende Programm abstürzt.

Ein negativer Zählerwert stellt die Standard-Text Funktionalität aus.

Neu in Version 2.0.2 (Plugin).

request/lcd_20x4_bricklet/<UID>/get_default_text_counter
Anfrage:
  • keine Nutzdaten
Antwort:
  • counter – Typ: int, Einheit: 1 ms, Wertebereich: [-231 bis 231 - 1], Standardwert: -1

Gibt den aktuellen Wert des Standard-Text-Zählers zurück.

Neu in Version 2.0.2 (Plugin).

request/lcd_20x4_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", "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 ist 'a', 'b', 'c', 'd', 'e', 'f', 'g' oder 'h' (Bricklet Anschluss). Ein 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 LCD 20x4.

Callbacks

Callbacks können registriert werden um zeitkritische oder wiederkehrende Daten vom Gerät zu erhalten. Die Registrierung kann mit dem entsprechenden .../register/...-Topic und einem optionalen Suffix durchgeführt werden. Mit diesem Suffix kann das Callback später deregistriert werden.

Bemerkung

Callbacks für wiederkehrende Ereignisse zu verwenden ist immer zu bevorzugen gegenüber der Verwendung von Abfragen. Es wird weniger USB-Bandbreite benutzt und die Latenz ist erheblich geringer, da es keine Paketumlaufzeit gibt.

register/lcd_20x4_bricklet/<UID>/button_pressed
Registrierungsanfrage:
  • register – Typ: bool
Callback-Antwort:
  • button – Typ: int, Wertebereich: [0 bis 3]

Ein Callback für dieses Event kann durch Senden des Payloads "true" an das .../register/lcd_20x4_bricklet/<UID>/button_pressed[/<SUFFIX>]-Topic hinzugefügt werden. Ein hinzugefügtes Callback kann durch Senden des Payloads "false" an das selbe Topic wieder entfernt werden. Um mehrere (De-)Registrierungen zu unterstützen, z.B. um Nachrichten filtern zu können, kann ein optionaler Suffix verwendet werden.

Wenn das Callback ausgelöst wird, wird dessen Payload für jeden Suffix auf dem entsprechenden .../callback/lcd_20x4_bricklet/<UID>/button_pressed[/<SUFFIX>]-Topic veröffentlicht.

Dieser Callback wird ausgelöst, wenn eine Taste gedrückt wird. Der Payload des Callbacks ist die Nummer der Taste (0 bis 2 oder 0 bis 3 seit Hardware Version 1.2).

register/lcd_20x4_bricklet/<UID>/button_released
Registrierungsanfrage:
  • register – Typ: bool
Callback-Antwort:
  • button – Typ: int, Wertebereich: [0 bis 3]

Ein Callback für dieses Event kann durch Senden des Payloads "true" an das .../register/lcd_20x4_bricklet/<UID>/button_released[/<SUFFIX>]-Topic hinzugefügt werden. Ein hinzugefügtes Callback kann durch Senden des Payloads "false" an das selbe Topic wieder entfernt werden. Um mehrere (De-)Registrierungen zu unterstützen, z.B. um Nachrichten filtern zu können, kann ein optionaler Suffix verwendet werden.

Wenn das Callback ausgelöst wird, wird dessen Payload für jeden Suffix auf dem entsprechenden .../callback/lcd_20x4_bricklet/<UID>/button_released[/<SUFFIX>]-Topic veröffentlicht.

Dieser Callback wird ausgelöst, wenn eine Taste losgelassen wird. Der Payload des Callbacks ist die Nummer der Taste (0 bis 2 oder 0 bis 3 seit Hardware Version 1.2).