gt911 — GT911 kapazitiver 5-Punkt-Touch-Controller

Das Modul gt911 stellt einen Treiber für den projiziert-kapazitiven Touchscreen-Controller Goodix GT911 bereit, eine häufige Kombination mit 4,3“–7“-LCD-Panels mit 800x480. Der Controller verfolgt bis zu fünf gleichzeitige Berührungspunkte und meldet jeden als (x, y, size, id)-Tupel, wobei id über mehrere Lesevorgänge hinweg stabil bleibt, solange der Finger auf dem Panel verbleibt.

Der Treiber kommuniziert mit dem Chip über I2C und verwendet zwei zusätzliche GPIOs:

  • eine Reset-Leitung, die während des Einschaltens auf Low gehalten und zusammen mit der IRQ-Leitung umgeschaltet wird, um die 7-Bit-I2C-Adresse des GT911 auszuwählen (0x5D, wenn IRQ während des Resets auf Low ist, 0x14, wenn IRQ auf High ist);

  • eine Interrupt-Leitung, die vom Controller aktiviert wird, wenn ein Berührungsereignis auftritt.

Nach der Konstruktion können Anwendungen mit GT911.read_points() Berührungen abfragen oder einen touch_callback bereitstellen, der bei der fallenden Flanke des IRQ-Pins aufgerufen wird.

class GT911 – kapazitiver 5-Punkt-Touch-Controller

class gt911.GT911(bus: machine.I2C, reset_pin: int | str, irq_pin: int | str, address: int = _DEFAULT_ADDR, width: int = 800, height: int = 480, touch_points: int = 1, reverse_x: bool = False, reverse_y: bool = False, reverse_axis: bool = True, sito: bool = True, refresh_rate: int = 240, touch_callback: Callable | None = None)

Erstellt ein GT911-Touchscreen-Controller-Objekt.

bus ist das machine.I2C-Busobjekt, an das der GT911 angeschlossen ist.

reset_pin ist die Pin-Nummer oder der Name (kein Pin-Objekt), der mit der Reset-Leitung des GT911 verbunden ist. Der Treiber muss während des Resets die Pin-Richtung ändern.

irq_pin ist die Pin-Nummer oder der Name (kein Pin-Objekt), der mit der Interrupt-Leitung des GT911 verbunden ist. Der Treiber muss während des Resets die Pin-Richtung ändern.

address ist die I2C-Adresse des Controllers. Standardmäßig gt911._DEFAULT_ADDR.

width ist die Auflösung des Touch-Panels entlang der X-Achse in Pixeln.

height ist die Auflösung des Touch-Panels entlang der Y-Achse in Pixeln.

touch_points ist die maximale Anzahl gleichzeitig zu meldender Berührungspunkte (1 bis 5).

reverse_x spiegelt die X-Achse, wenn True.

reverse_y spiegelt die Y-Achse, wenn True.

reverse_axis tauscht die X- und Y-Achse, wenn True.

sito aktiviert den Single-Input-Touch-Output-Modus des Controllers, wenn True.

refresh_rate ist die Melderate der Berührungen in Hz.

touch_callback ist ein optionales Callable, das bei der fallenden Flanke des IRQ-Pins aufgerufen wird, wenn ein Berührungsereignis auftritt. Übergeben Sie None, um den Abfragemodus zu verwenden.

read_id() bytes

Gibt 4 Bytes mit der Produkt-ID des GT911 zurück.

read_points() tuple

Gibt ein Tupel (n, points) zurück, wobei n die Anzahl der aktiven Berührungspunkte ist und points eine Liste aus 5 array("H", ...)-Einträgen ist. Jeder Eintrag enthält [x, y, size, id]: x und y sind die Bildschirmkoordinaten, size ist der Berührungsdruck und id ist eine eindeutige Verfolgungs-ID, die für einen bestimmten Finger über mehrere Lesevorgänge hinweg stabil bleibt.

Nur die ersten n Einträge von points enthalten gültige Daten.

reset() None

Setzt den GT911-Controller zurück und reaktiviert den IRQ-Handler, falls ein touch_callback bereitgestellt wurde.

Konstanten

gt911._DEFAULT_ADDR: int

Standard-I2C-Adresse (0x5D) des GT911-Controllers.