所需硬件
1、电脑
2、ESP32开发板
3、USB数据线(要能传输的线,不能是只能充电的线)
前提
完成环境部署,具体可参考文章micropython ESP32环境部署-CSDN博客
了解Thoney基本操作,具体可参考文章Thonny安装_thonny安装教程-CSDN博客
一、定时器的使用
ESP32内置4个通用硬件定时器,序号分别为0,1,2,3。借助定时器,我们可以实现计数、定时等功能,其使用步骤为
1.1、定义回调方法、定义定时器、初始化定时器
def myTimerCallback(theTimer): print("tick") timer = machine.Timer(0) timer.init(period=100, mode=Timer.PERIODIC, callback=myTimerCallback
第1行、第2行
定义一个方法myTimerCallback,作为定时任务的回调方法,其有一个形参,为调用该回调方法的定时器
第3行 timer = machine.Timer(0)
定义变量timer 指向ESP32的第0号定时器;
第4行 timer.init(period=100, mode=machine.Timer.PERIODIC, callback=myTimerCallback
初始化定时器,设定周期100ms,模式为周期性,回调函数为自定义的函数myTimerCallback,这样ESP32将每100毫秒执行一次myTimerCallback函数,效果就是系统将每隔100ms打印tick字符串
1.2 取消定时器
调用定时器的deinit方法将取消定时器,此时定时器的定时任务将停止
timer.deinit()
二、通过定时器控制LED灯闪烁
在前面的文章中,我们讲了通过while循环和time.sleep控制LED灯的闪烁
while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1)
但这种方法毕竟不够优雅,本例我们将通过定时器控制LED灯的闪烁,代码如下
import machine led = machine.Pin(2,machine.Pin.OUT) def changeLED(theTimer): led.value(not led.value()) timer = machine.Timer(0) timer.init(period=1000, mode=machine.Timer.PERIODIC, callback=changeLED)
执行代码,我们可以看到ESP32的蓝色LED不停闪烁
下面分析下代码
第3行、第4行
定义定时器回调方法changeLED,在方法中,修改LED的亮灭状态
第5行
定义变量timer,指向ESP32的第0号定时器
第6行
初始化定时器,设定周期1000ms,模式为周期性的,回调函数为前面第3行定义的changeLED,这样ESP32将每1000毫秒执行一次changeLED函数,效果就是蓝色LED灯不停闪烁。