gt911 — GT911 capacitieve touch-controller met 5 punten

De gt911-module biedt een driver voor de Goodix GT911 projected-capacitive touchscreen-controller, een veelvoorkomende combinatie met 4.3”–7” 800x480 LCD-panelen. De controller volgt tot vijf gelijktijdige aanraakpunten en rapporteert elk als een (x, y, size, id)-tuple, waarbij id stabiel blijft over uitlezingen heen zolang de vinger op het paneel blijft.

De driver communiceert met de chip via I2C en gebruikt twee extra GPIO’s:

  • een reset-lijn, die laag wordt gehouden tijdens het opstarten en samen met de IRQ-lijn wordt geschakeld om het 7-bits I2C-adres van de GT911 te selecteren (0x5D wanneer IRQ laag is tijdens reset, 0x14 wanneer IRQ hoog is);

  • een interrupt-lijn, die door de controller wordt geactiveerd wanneer een aanraakgebeurtenis plaatsvindt.

Na constructie kunnen applicaties pollen naar aanrakingen met GT911.read_points() of een touch_callback opgeven die wordt aangeroepen op de dalende flank van de IRQ-pin.

class GT911 – Capacitieve touch-controller met 5 punten

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)

Maakt een GT911 touchscreen-controllerobject aan.

bus is het machine.I2C-busobject waarop de GT911 is aangesloten.

reset_pin is het pinnummer of de pinnaam (geen Pin-object) dat is verbonden met de reset-lijn van de GT911. De driver moet de pinrichting wijzigen tijdens reset.

irq_pin is het pinnummer of de pinnaam (geen Pin-object) dat is verbonden met de interrupt-lijn van de GT911. De driver moet de pinrichting wijzigen tijdens reset.

address is het I2C-adres van de controller. Standaard gt911._DEFAULT_ADDR.

width is de resolutie van het touchpaneel langs de X-as in pixels.

height is de resolutie van het touchpaneel langs de Y-as in pixels.

touch_points is het maximale aantal gelijktijdige aanraakpunten dat gerapporteerd wordt (1 tot 5).

reverse_x indien True keert de X-as om.

reverse_y indien True keert de Y-as om.

reverse_axis indien True verwisselt de X- en Y-as.

sito schakelt de Single-Input-Touch-Output-modus van de controller in indien True.

refresh_rate is de aanraakrapportagesnelheid in Hz.

touch_callback is een optionele aanroepbare functie die wordt aangeroepen op de dalende flank van de IRQ-pin wanneer een aanraakgebeurtenis plaatsvindt. Geef None door om de polling-modus te gebruiken.

read_id() bytes

Retourneert 4 bytes met de product-ID van de GT911.

read_points() tuple

Retourneert een tuple (n, points) waarbij n het aantal actieve aanraakpunten is en points een lijst is van 5 array("H", ...)-items. Elk item bevat [x, y, size, id]: x en y zijn de schermcoördinaten, size is de aanraakdruk en id is een unieke tracking-ID die stabiel blijft voor een bepaalde vinger over uitlezingen heen.

Alleen de eerste n items van points bevatten geldige data.

reset() None

Reset de GT911-controller en activeert de IRQ-handler opnieuw als een touch_callback is opgegeven.

Constanten

gt911._DEFAULT_ADDR: int

Standaard I2C-adres (0x5D) van de GT911-controller.