first commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Basic usage example for the PyFT5xx6 library.
|
||||
This example demonstrates how to use the FT5316 touch controller in polling mode.
|
||||
"""
|
||||
|
||||
from pyft5xx6 import FT5316, Status, Mode, Gestures
|
||||
import time
|
||||
|
||||
def main():
|
||||
# Initialize the touch controller
|
||||
touch = FT5316()
|
||||
result = touch.begin(i2c_bus=1) # Using I2C bus 1
|
||||
|
||||
if result != Status.NOMINAL:
|
||||
print("Failed to initialize touch controller")
|
||||
return
|
||||
|
||||
# Set polling mode
|
||||
touch.set_mode(Mode.POLLING)
|
||||
|
||||
print("Touch controller initialized. Touch the screen...")
|
||||
|
||||
# Allocate a buffer for 10 touch records
|
||||
touch.use_buffer(10)
|
||||
|
||||
# Main loop
|
||||
try:
|
||||
while True:
|
||||
# Update touch data
|
||||
touch.update()
|
||||
|
||||
# Check if there is a new touch event
|
||||
if touch.new_touch:
|
||||
record = touch.read()
|
||||
print(f"Number of touches: {record.num_touches}")
|
||||
|
||||
if record.num_touches > 0:
|
||||
print(f"Touch 1: ({record.t1x}, {record.t1y})")
|
||||
|
||||
if record.num_touches > 1:
|
||||
print(f"Touch 2: ({record.t2x}, {record.t2y})")
|
||||
|
||||
if record.gesture != Gestures.NO_GESTURE:
|
||||
print(f"Gesture: {record.gesture.name}")
|
||||
|
||||
time.sleep(0.01) # 10ms delay
|
||||
|
||||
except KeyboardInterrupt:
|
||||
print("Exiting")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Interrupt mode example for the PyFT5xx6 library.
|
||||
This example demonstrates how to use the FT5316 touch controller with interrupt-based operation.
|
||||
"""
|
||||
|
||||
from pyft5xx6 import FT5316, Status, Mode, Gestures
|
||||
import time
|
||||
import signal
|
||||
import sys
|
||||
|
||||
try:
|
||||
import RPi.GPIO as GPIO
|
||||
except ImportError:
|
||||
print("RPi.GPIO not available. This example requires a Raspberry Pi.")
|
||||
sys.exit(1)
|
||||
|
||||
# Interrupt pin (BCM numbering)
|
||||
INT_PIN = 17 # Change to match your wiring
|
||||
|
||||
# Flag for cleanup on exit
|
||||
cleanup_done = False
|
||||
|
||||
# Interrupt handler
|
||||
def touch_interrupt(channel):
|
||||
"""Called when a touch event triggers the interrupt pin"""
|
||||
# Just set the controller's interrupt flag
|
||||
# The actual data reading is done in the main loop
|
||||
touch.interrupt()
|
||||
print("Touch interrupt detected")
|
||||
|
||||
# Signal handler for clean exit
|
||||
def signal_handler(sig, frame):
|
||||
global cleanup_done
|
||||
print("Exiting...")
|
||||
if not cleanup_done:
|
||||
GPIO.cleanup()
|
||||
cleanup_done = True
|
||||
sys.exit(0)
|
||||
|
||||
def main():
|
||||
global touch
|
||||
|
||||
# Register signal handler
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
# Initialize the touch controller
|
||||
touch = FT5316()
|
||||
result = touch.begin(i2c_bus=1, int_pin=INT_PIN, user_isr=touch_interrupt)
|
||||
|
||||
if result != Status.NOMINAL:
|
||||
print("Failed to initialize touch controller")
|
||||
GPIO.cleanup()
|
||||
return
|
||||
|
||||
# Allocate a buffer for 10 touch records
|
||||
touch.use_buffer(10)
|
||||
|
||||
print("Touch controller initialized in interrupt mode.")
|
||||
print("Touch the screen to trigger interrupt...")
|
||||
|
||||
# Main loop
|
||||
try:
|
||||
while True:
|
||||
# Check if new data is available (set by the interrupt handler)
|
||||
if touch.new_data:
|
||||
# Read touch data
|
||||
if touch.new_touch:
|
||||
record = touch.read()
|
||||
print(f"Number of touches: {record.num_touches}")
|
||||
|
||||
if record.num_touches > 0:
|
||||
print(f"Touch 1: ({record.t1x}, {record.t1y})")
|
||||
|
||||
if record.num_touches > 1:
|
||||
print(f"Touch 2: ({record.t2x}, {record.t2y})")
|
||||
|
||||
if record.gesture != Gestures.NO_GESTURE:
|
||||
print(f"Gesture: {record.gesture.name}")
|
||||
|
||||
time.sleep(0.01) # 10ms delay
|
||||
|
||||
except KeyboardInterrupt:
|
||||
# This should be caught by the signal handler
|
||||
pass
|
||||
finally:
|
||||
if not cleanup_done:
|
||||
GPIO.cleanup()
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user