gt911 — GT911 5점 정전식 터치 컨트롤러

gt911 모듈은 4.3”–7” 800x480 LCD 패널과 흔히 함께 사용되는 Goodix GT911 투영형 정전식 터치스크린 컨트롤러용 드라이버를 제공합니다. 이 컨트롤러는 최대 5개의 동시 터치 포인트를 추적하며, 각각을 (x, y, size, id) 튜플로 보고합니다. 여기서 id는 손가락이 패널에 남아 있는 동안 읽기를 거쳐 안정적으로 유지됩니다.

드라이버는 I2C를 통해 칩과 통신하며, 두 개의 추가 GPIO를 사용합니다:

  • reset 라인: 전원 켜기 중에 낮게 유지되며, IRQ 라인과 함께 토글되어 GT911의 7비트 I2C 주소를 선택합니다(리셋 중 IRQ가 낮으면 0x5D, 높으면 0x14);

  • interrupt 라인: 터치 이벤트가 발생하면 컨트롤러에 의해 어서트됩니다.

생성 후, 애플리케이션은 GT911.read_points()로 터치를 폴링하거나, IRQ 핀의 하강 에지에서 호출될 touch_callback을 제공할 수 있습니다.

class GT911 – 5점 정전식 터치 컨트롤러

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)

GT911 터치 스크린 컨트롤러 객체를 생성합니다.

bus는 GT911이 연결된 machine.I2C 버스 객체입니다.

reset_pin은 GT911 리셋 라인에 연결된 핀 번호 또는 이름(Pin 객체가 아님)입니다. 드라이버는 리셋 중에 핀 방향을 변경해야 합니다.

irq_pin은 GT911 인터럽트 라인에 연결된 핀 번호 또는 이름(Pin 객체가 아님)입니다. 드라이버는 리셋 중에 핀 방향을 변경해야 합니다.

address는 컨트롤러의 I2C 주소입니다. 기본값은 gt911._DEFAULT_ADDR입니다.

width는 X축 방향의 터치 패널 해상도(픽셀)입니다.

height는 Y축 방향의 터치 패널 해상도(픽셀)입니다.

touch_points는 보고할 최대 동시 터치 포인트 수(1~5)입니다.

reverse_x가 True이면 X축을 뒤집습니다.

reverse_y가 True이면 Y축을 뒤집습니다.

reverse_axis가 True이면 X축과 Y축을 교환합니다.

sito가 True이면 컨트롤러의 Single-Input-Touch-Output 모드를 활성화합니다.

refresh_rate는 터치 보고 속도(Hz)입니다.

touch_callback은 터치 이벤트가 발생할 때 IRQ 핀의 하강 에지에서 호출되는 선택적 호출 가능 객체입니다. 폴링 모드를 사용하려면 None을 전달하세요.

read_id() bytes

GT911 제품 ID를 담은 4바이트를 반환합니다.

read_points() tuple

튜플 (n, points)을 반환합니다. 여기서 n은 활성 터치 포인트 수이고 points는 5개의 array("H", ...) 항목으로 이루어진 리스트입니다. 각 항목은 [x, y, size, id]를 담습니다: xy는 화면 좌표, size는 터치 압력, id는 읽기를 거쳐 특정 손가락에 대해 안정적으로 유지되는 고유 추적 ID입니다.

points의 처음 n개 항목만 유효한 데이터를 담고 있습니다.

reset() None

GT911 컨트롤러를 리셋하고, touch_callback이 제공되었다면 IRQ 핸들러를 다시 준비합니다.

상수

gt911._DEFAULT_ADDR: int

GT911 컨트롤러의 기본 I2C 주소(0x5D).