Modbus - LCD 20x4 Bricklet

Dies ist die Beschreibung des Modbus Protokolls für das LCD 20x4 Bricklet. Allgemeine Informationen über die Funktionen und technischen Spezifikationen des LCD 20x4 Bricklet sind in dessen Hardware Beschreibung zusammengefasst.

API

Eine allgemeine Beschreibung der Modbus Protokollstruktur findet sich hier.

Grundfunktionen

BrickletLCD20x4.write_line
Funktions-ID:
  • 1
Anfrage:
  • line – Typ: uint8, Wertebereich: [0 bis 3]
  • position – Typ: uint8, Wertebereich: [0 bis 19]
  • text – Typ: char[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.

BrickletLCD20x4.clear_display
Funktions-ID:
  • 2
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Löscht alle Zeichen auf dem Display.

BrickletLCD20x4.backlight_on
Funktions-ID:
  • 3
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Aktiviert die Hintergrundbeleuchtung.

BrickletLCD20x4.backlight_off
Funktions-ID:
  • 4
Anfrage:
  • keine Nutzdaten
Antwort:
  • keine Antwort

Deaktiviert die Hintergrundbeleuchtung.

BrickletLCD20x4.is_backlight_on
Funktions-ID:
  • 5
Anfrage:
  • keine Nutzdaten
Antwort:
  • backlight – Typ: bool

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

Fortgeschrittene Funktionen

BrickletLCD20x4.set_config
Funktions-ID:
  • 6
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 write_line geschriebenen Text.

BrickletLCD20x4.get_config
Funktions-ID:
  • 7
Anfrage:
  • keine Nutzdaten
Antwort:
  • cursor – Typ: bool, Standardwert: false
  • blinking – Typ: bool, Standardwert: false

Gibt die Konfiguration zurück, wie von set_config gesetzt.

BrickletLCD20x4.is_button_pressed
Funktions-ID:
  • 8
Anfrage:
  • button – Typ: uint8, 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 CALLBACK_BUTTON_PRESSED und CALLBACK_BUTTON_RELEASED Callbacks zu nutzen.

BrickletLCD20x4.set_custom_character
Funktions-ID:
  • 11
Anfrage:
  • index – Typ: uint8, Wertebereich: [0 bis 7]
  • character – Typ: uint8[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 write_line mit den chars mit den Byterepräsentationen 8 ("x08") bis 15 ("x0F") 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).

BrickletLCD20x4.get_custom_character
Funktions-ID:
  • 12
Anfrage:
  • index – Typ: uint8, Wertebereich: [0 bis 7]
Antwort:
  • character – Typ: uint8[8], Wertebereich: [0 bis 31]

Gibt den benutzerdefinierten Buchstaben für den gegebenen Index zurück, wie von set_custom_character gesetzt.

Neu in Version 2.0.1 (Plugin).

BrickletLCD20x4.set_default_text
Funktions-ID:
  • 13
Anfrage:
  • line – Typ: uint8, Wertebereich: [0 bis 3]
  • text – Typ: char[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 set_default_text_counter.

Neu in Version 2.0.2 (Plugin).

BrickletLCD20x4.get_default_text
Funktions-ID:
  • 14
Anfrage:
  • line – Typ: uint8, Wertebereich: [0 bis 3]
Antwort:
  • text – Typ: char[20]

Gibt den Standard-Text für die Zeilen 0-3 zurück, wie von set_default_text gesetzt.

Neu in Version 2.0.2 (Plugin).

BrickletLCD20x4.set_default_text_counter
Funktions-ID:
  • 15
Anfrage:
  • counter – Typ: int32, 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 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 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).

BrickletLCD20x4.get_default_text_counter
Funktions-ID:
  • 16
Anfrage:
  • keine Nutzdaten
Antwort:
  • counter – Typ: int32, 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).

BrickletLCD20x4.get_identity
Funktions-ID:
  • 255
Anfrage:
  • keine Nutzdaten
Antwort:
  • uid – Typ: char[8]
  • connected_uid – Typ: char[8]
  • position – Typ: char, Wertebereich: ['a' bis 'h', 'i', 'z']
  • hardware_version – Typ: uint8[3]
    • 0: major – Typ: uint8, Wertebereich: [0 bis 255]
    • 1: minor – Typ: uint8, Wertebereich: [0 bis 255]
    • 2: revision – Typ: uint8, Wertebereich: [0 bis 255]
  • firmware_version – Typ: uint8[3]
    • 0: major – Typ: uint8, Wertebereich: [0 bis 255]
    • 1: minor – Typ: uint8, Wertebereich: [0 bis 255]
    • 2: revision – Typ: uint8, Wertebereich: [0 bis 255]
  • device_identifier – Typ: uint16, Wertebereich: [0 bis 216 - 1]

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. 

Callbacks

BrickletLCD20x4.CALLBACK_BUTTON_PRESSED
Funktions-ID:
  • 9
Antwort:
  • button – Typ: uint8, Wertebereich: [0 bis 3]

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

BrickletLCD20x4.CALLBACK_BUTTON_RELEASED
Funktions-ID:
  • 10
Antwort:
  • button – Typ: uint8, Wertebereich: [0 bis 3]

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