1、我们需要做的是生成触摸按钮,实现触摸控制LED灯状态变换。先来看构造函数
2、编写相应的程序
from tftlcd import LCD32
from touch import XPT2046
from machine import Timer,Pin
import gui,time
#定义常用颜色
BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (255,0,0)
GREEN = (0,255,0)
BLUE = (0,0,255)
ORANGE = (0xFF,0x7F,0x00) #橙色
#LCD初始化
d = LCD32(portrait = 1)
d.fill(WHITE)
#触摸屏初始化
t = XPT2046()
LED = Pin(46,Pin.OUT)
state = 0
#定义两个按键和回调函数
def fun1(B1):
#LED灯状态翻转
global state
state = not state
LED.value(state)
def fun2(B2):
print('Button is pressed!')
B1 = gui.TouchButton(80,50,80,50,BLUE,'LED1',WHITE,fun1)
B2 = gui.TouchButton(80,120,80,50,RED,'Button',WHITE,fun2)
#定时器用于扫描按钮触发事件
tim_flag = 0
def count(tim):
global tim_flag
tim_flag = 1
tim = Timer(1)
tim.init(period=20,mode=Timer.PERIODIC,callback=count)
while True:
#执行按钮触发的任务
if tim_flag == 1:
t.tick_inc()
gui.task_handler()
tim_flag = 0
3、显示效果如下:
点击LED1按钮,led灯会亮
点击Button按钮会打印Button is pressed
注意:Micropython 所有中断回调函数都不支持新的内存分配语句,否则会 报错,因此可以通过定义全局变量(global),在回调函数修改,然后在主循环函 数判断然后做出相应的控制。