gt911 --- ตัวควบคุมสัมผัส GT911 แบบ 5 จุด Capacitive

โมดูล gt911 จัดเตรียมไดรเวอร์สำหรับตัวควบคุมหน้าจอสัมผัสแบบ projected-capacitive Goodix GT911 ซึ่งเป็นคู่ที่พบบ่อยกับแผง LCD 800x480 ขนาด 4.3"--7" ตัวควบคุมติดตามจุดสัมผัสพร้อมกันสูงสุดห้าจุดและรายงานแต่ละจุดเป็น tuple (x, y, size, id) โดย id จะคงที่ข้ามการอ่านตราบเท่าที่นิ้วยังอยู่บนแผง

ไดรเวอร์สื่อสารกับชิปผ่าน I2C และใช้ GPIO เพิ่มเติมสองตัว:

  • สาย reset ที่ถูกดึงต่ำระหว่างการเปิดเครื่องและสลับพร้อมกับสาย IRQ เพื่อเลือกที่อยู่ I2C 7 บิตของ GT911 (0x5D เมื่อ IRQ ต่ำระหว่างรีเซ็ต 0x14 เมื่อ IRQ สูง)

  • สาย interrupt ที่ตัวควบคุมยืนยันเมื่อเกิดเหตุการณ์สัมผัส

หลังจากสร้างแล้ว แอปพลิเคชันสามารถโพลล์หาการสัมผัสด้วย GT911.read_points() หรือระบุ touch_callback ที่จะถูกเรียกบน falling edge ของพิน IRQ

class GT911 -- ตัวควบคุมสัมผัส 5 จุด Capacitive

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 คือออบเจ็กต์บัส machine.I2C ที่ GT911 เชื่อมต่ออยู่

reset_pin คือหมายเลขหรือชื่อพิน (ไม่ใช่ออบเจ็กต์ Pin) ที่เชื่อมต่อกับสาย reset ของ GT911 ไดรเวอร์จำเป็นต้องเปลี่ยนทิศทางพินระหว่างการรีเซ็ต

irq_pin คือหมายเลขหรือชื่อพิน (ไม่ใช่ออบเจ็กต์ Pin) ที่เชื่อมต่อกับสาย interrupt ของ GT911 ไดรเวอร์จำเป็นต้องเปลี่ยนทิศทางพินระหว่างการรีเซ็ต

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 เปิดใช้งานโหมด Single-Input-Touch-Output ของตัวควบคุมเมื่อเป็น True

refresh_rate คืออัตราการรายงานการสัมผัสเป็น Hz

touch_callback คือ callable ที่เป็นตัวเลือก ถูกเรียกบน falling edge ของพิน IRQ เมื่อเกิดเหตุการณ์สัมผัส ส่ง None เพื่อใช้โหมดโพลล์

read_id() bytes

คืนค่า 4 ไบต์ที่มี product ID ของ GT911

read_points() tuple

คืนค่า tuple (n, points) โดย n คือจำนวนจุดสัมผัสที่ใช้งานอยู่ และ points คือรายการ 5 รายการของ array("H", ...) แต่ละรายการมี [x, y, size, id]: x และ y เป็นพิกัดหน้าจอ size คือแรงกด และ id เป็น ID ติดตามเฉพาะที่คงที่สำหรับนิ้วที่กำหนดข้ามการอ่าน

เฉพาะ n รายการแรกของ points เท่านั้นที่มีข้อมูลที่ถูกต้อง

reset() None

รีเซ็ตตัวควบคุม GT911 และตั้งค่า IRQ handler ใหม่ถ้ามี touch_callback

ค่าคงที่

gt911._DEFAULT_ADDR: int

ที่อยู่ I2C เริ่มต้น (0x5D) ของตัวควบคุม GT911