一、目的
通过Wokwi仿真micropython on ESP32开发板,实现流水灯控制,可通过按键来改变流水灯的行为。
二、硬件环境
三、代码
代码的具体意思我都写在备注里了。都能看得懂哈。
main.py
'''
写一个流水灯,赤橙黄绿,线材对应相应的颜色,采取不同的颜色按钮对应不同的功能,
粉色为加速,蓝色为减速,白色为默认,并且把相应的ID改为对应的按键名。
整体流程就是:主程序是定时器流水灯的闪烁,中断服务是时间的控制,
运行顺序是从头到尾之后,通过定时器的调用来运行不同是函数。
'''
from machine import Pin,Timer # 导入GPIO脚和定时器
import time,utime,machine # 导入时间模块
#定义流水灯
Speed = 1000 # 控制频率
L_Red = Pin(27, Pin.OUT) # 实例化27脚为输出模式
L_blue = Pin(33, Pin.OUT) # 实例化33脚为输出模式
L_Yellow = Pin(32, Pin.OUT) # 实例化32脚为输出模式
L_Green = Pin(25, Pin.OUT) # 实例化25脚为输出模式
'''
#配置在引脚的触发源处于活动状态时调用的中断处理程序。
如果引脚模式是Pin.IN 则触发源是引脚上的外部值。
如果引脚模式是Pin.OUT 则触发源是引脚的输出缓冲器。
如果引脚模式是Pin.OPEN_DRAIN 那么触发源是状态'0'的输出缓冲器和状态'1'的外部引脚值。
'''
Leds = [L_Red, L_blue, L_Yellow, L_Green] # 创建流水灯列表
Tim_S = Timer(0) # 构建定时器,创建控制速度对象。
i = 0 # 控制灯的循环
def Twinkle(t): # 定义闪烁函数
global i # 设置全局变量i, 用于切换LED
print("Speed={}".format(Speed)) # 打印LED闪的速度
Leds[i%4].value(1-Leds[i%4].value()) # 切换LED
i = i + 1
def enter(t): # 定义一个默认速度的函数
global Speed # 设置全局变量Speed, 用于调节LED闪的速度
Speed = 500 # 定义默认速度
Tim_S.init(period=Speed,mode&#