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.
busist dasmachine.I2C-Busobjekt, an das der GT911 angeschlossen ist.reset_pinist die Pin-Nummer oder der Name (keinPin-Objekt), der mit der Reset-Leitung des GT911 verbunden ist. Der Treiber muss während des Resets die Pin-Richtung ändern.irq_pinist die Pin-Nummer oder der Name (keinPin-Objekt), der mit der Interrupt-Leitung des GT911 verbunden ist. Der Treiber muss während des Resets die Pin-Richtung ändern.addressist die I2C-Adresse des Controllers. Standardmäßiggt911._DEFAULT_ADDR.widthist die Auflösung des Touch-Panels entlang der X-Achse in Pixeln.heightist die Auflösung des Touch-Panels entlang der Y-Achse in Pixeln.touch_pointsist die maximale Anzahl gleichzeitig zu meldender Berührungspunkte (1 bis 5).reverse_xspiegelt die X-Achse, wenn True.reverse_yspiegelt die Y-Achse, wenn True.reverse_axistauscht die X- und Y-Achse, wenn True.sitoaktiviert den Single-Input-Touch-Output-Modus des Controllers, wenn True.refresh_rateist die Melderate der Berührungen in Hz.touch_callbackist ein optionales Callable, das bei der fallenden Flanke des IRQ-Pins aufgerufen wird, wenn ein Berührungsereignis auftritt. Übergeben SieNone, um den Abfragemodus zu verwenden.- read_points() tuple¶
Gibt ein Tupel
(n, points)zurück, wobeindie Anzahl der aktiven Berührungspunkte ist undpointseine Liste aus 5array("H", ...)-Einträgen ist. Jeder Eintrag enthält[x, y, size, id]:xundysind die Bildschirmkoordinaten,sizeist der Berührungsdruck undidist eine eindeutige Verfolgungs-ID, die für einen bestimmten Finger über mehrere Lesevorgänge hinweg stabil bleibt.Nur die ersten
nEinträge vonpointsenthalten gültige Daten.