MQTT - LCD 16x2 Bricklet

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

setup:
    # Turn backlight on
    publish '' to tinkerforge/request/lcd_16x2_bricklet/XYZ/backlight_on 
    
    # Write "Hello World"
    publish '{"line": 0, "position": 0, "text": "Hello World"}' to tinkerforge/request/lcd_16x2_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 16x2 Bricklet

setup:
    # Handle incoming button pressed callbacks
    subscribe to tinkerforge/callback/lcd_16x2_bricklet/XYZ/button_pressed
    publish '{"register": true}' to tinkerforge/register/lcd_16x2_bricklet/XYZ/button_pressed # Register button_pressed callback
    
    # Handle incoming button released callbacks
    subscribe to tinkerforge/callback/lcd_16x2_bricklet/XYZ/button_released
    publish '{"register": true}' to tinkerforge/register/lcd_16x2_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
# Change XYZ to the UID of your LCD 16x2 Bricklet

setup:
    # Turn backlight on
    publish '' to tinkerforge/request/lcd_16x2_bricklet/XYZ/backlight_on 
    
    function UTF8ToKS006U # This function should convert strings from UTF-8 to the LCD charset. See examples for other languages.
    
    # Write a string using the FIXME function to map to the LCD charset
    publish '{"line": 0, "position": 0, "text": UTF8ToKS0066U("Stromstärke: 5µA")}' to tinkerforge/request/lcd_16x2_bricklet/XYZ/write_line 
    
    # Write a string directly including characters from the LCD charset
    publish '{"line": 1, "position": 0, "text": "Drehzahl: 1000s\u00e9"}' to tinkerforge/request/lcd_16x2_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_16x2_bricklet/<UID>/write_line
Anfrage:
  • line – Typ: int, Wertebereich: [0 bis 1]
  • position – Typ: int, Wertebereich: [0 bis 15]
  • text – Typ: string, Länge: bis zu 16
Antwort:
  • keine Antwort

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

Beispiel: (0, 5, "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_16x2_bricklet/<UID>/clear_display
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Löscht alle Zeichen auf dem Display.

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

Aktiviert die Hintergrundbeleuchtung.

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

Deaktiviert die Hintergrundbeleuchtung.

request/lcd_16x2_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_16x2_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_16x2_bricklet/<UID>/write_line geschriebenen Text.

request/lcd_16x2_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_16x2_bricklet/<UID>/set_config gesetzt.

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

Gibt true zurück wenn die Taste gedrückt ist.

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

request/lcd_16x2_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 16x2 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_16x2_bricklet/<UID>/write_line mit den chars mit den Byterepräsentationen 8 bis 15 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 16x2 Bricklets gesetzt werden.

Neu in Version 2.0.1 (Plugin).

request/lcd_16x2_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_16x2_bricklet/<UID>/get_custom_character gesetzt.

Neu in Version 2.0.1 (Plugin).

request/lcd_16x2_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
  • hardware_version – Typ: [int, ...], Länge: 3, Wertebereich: [0 bis 255]
  • firmware_version – Typ: [int, ...], Länge: 3, 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 kann 'a', 'b', 'c' oder 'd' sein.

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 16x2.

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_16x2_bricklet/<UID>/button_pressed
Registrierungsanfrage:
  • register – Typ: bool
Callback-Antwort:
  • button – Typ: int, Wertebereich: [0 bis 2]

Ein Callback für dieses Event kann durch Senden des Payloads "true" an das .../register/lcd_16x2_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_16x2_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.

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

Ein Callback für dieses Event kann durch Senden des Payloads "true" an das .../register/lcd_16x2_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_16x2_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.