(1)实验目的
本实验旨在利用MicroPython编程语言控制ESP32模块实现使用定时器中断方式控制LED周期闪烁。
MicroPython中的定时器中断是一种基于时间的中断机制,允许程序在预定的时间间隔内执行特定的操作。定时器中断功能对于需要精确计时和周期性任务的应用非常有用。
使用MicroPython的定时器中断功能,可以设置定时器的计时周期,并关联一个中断处理函数。当定时器达到设定的时间间隔时,中断处理函数会被触发,中断当前正常的程序流程,并在处理完毕后返回原来的执行位置。
定时器中断可用于多种场景,例如定期采集传感器数据、周期性发送数据或控制信号等。它提供了一种简单而可靠的方式来实现时间相关的操作,并且可以与其他功能(如外部中断、串口通信等)结合使用,以满足更复杂的需求。
需要注意的是,在使用定时器中断时,需要考虑并发和同步问题,确保中断处理函数能够正确地与主程序进行交互,避免出现竞态条件和数据不一致等问题。
总而言之,MicroPython的定时器中断提供了一种方便、可靠的时间触发机制,用于周期性任务和精确计时。通过适当配置和编写中断处理函数,可以实现各种时间相关的操作,并满足特定应用的需求。
(2)实验材料
- ESP32模块
- PC(Windows)
- USB数据线
- LED模块(发光二极管)
- 杜邦线
(3)实验步骤
步骤1:连接ESP32模块与PC
- 使用USB线将ESP32模块与PC的USB口进行连接
- 确保ESP32模块在Thonny软件中能够被正确识别并建立连接
- 使用杜邦线按如下对应关系连线。注意:这里可以按如下连接方式外接LED,也可以不接(D2对应板载LED,直接使用即可)
步骤2:配置MicroPython开发环境
- 确保已经正确烧录 MicroPython固件
步骤3:编写脚本代码
- 打开Thonny软件,创建一个新的MicroPython脚本文件,文件名:main.py
- 在脚本文件中输入以下代码:
# -*- coding:utf-8 -*-
"""
无锡匠客物联网科技有限公司
技术支持:@NanGe(微信号:nange2012014158 | 公众号:南哥物联网笔记)
脚本名称: 定时器中断控制
接线说明:LED模块-->ESP32(GPIO)
LED(+)-->D2(板载LED,实际不需要接线)
LED(-)-->GND
脚本执行现象: 脚本程序下载成功后,led周期闪烁
注意事项:
1、正负极不要接反
"""
from machine import Pin# 导入Pin模块
from machine import Timer# 导入Timer模块
#定义led1控制对象
led1=Pin(2, Pin.OUT)
#定义led状态
led1_state=0
#定时器0中断函数
def time0_irq(time0):
global led1_state
led1_state = not led1_state
led1.value(led1_state)
#程序入口
if __name__=="__main__":
led1.value(led1_state)#初始化led,熄灭状态
time0=Timer(0)#创建time0定时器对象
time0.init(period=500,mode=Timer.PERIODIC,callback=time0_irq)
#循环
while True:
pass
步骤4:保存代码文件:
- 将核心代码保存到PC机某个文件夹,文件名为main.py
步骤5:运行实验
- 确保Thonny中运行->配置解释器中的解释器选择MicroPython(ESP32)
- 在Thonny中直接单击运行按钮
(4)实验结果
成功运行代码后,LED周期闪烁
(5)总结
通过本实验,学会了使用MicroPython编程语言使用定时器中断方式控制LED周期闪烁