• 已删除用户
创客孙老师
创客孙老师
发布于 2025-01-10 / 2 阅读
0
0

小实验:ESP32实现流水灯控制

ESP32提供了多路IO接口,下面的这个小试验实现了一个简单的流水灯控制,可以控制6个灯珠,当然也可以更多,可以根据情况增加和减少。

代码

将代码命名为main.py,上传到开发板,接好电路,运行即可。

# 导入所需库
from machine import Pin, PWM
import time

# 定义LED灯引脚
led_pins = [5, 18, 19, 21, 22, 23]

# 初始化PWM对象列表
pwm_list = []

# 设置LED灯引脚为输出模式,并初始化PWM对象
for pin in led_pins:
    pwm = PWM(Pin(pin))
    pwm.freq(1000)  # 设置PWM频率为1000Hz
    pwm.duty(0)  # 设置初始占空比为0
    pwm_list.append(pwm)

# 流水灯控制函数
def flow_led():
    for pwm in pwm_list:
        pwm.duty(512)  # 设置占空比为50%
        time.sleep_ms(200)  # 延时200ms
        pwm.duty(0)  # 关闭LED灯

# 循环执行流水灯控制
while True:
    flow_led()

代码说明

  1. 导入所需库,包括 machine库中的 PinPWM类,以及 time库。
  2. 定义LED灯引脚,这里使用了ESP32的6个GPIO引脚(5, 18, 19, 21, 22, 23)。
  3. 初始化PWM对象列表,用于存储每个LED灯的PWM对象。
  4. 设置LED灯引脚为输出模式,并初始化PWM对象。设置PWM频率为1000Hz,初始占空比为0。
  5. 定义流水灯控制函数 flow_led(),用于控制LED灯的亮度变化。
  6. flow_led()函数中,遍历PWM对象列表,依次设置每个LED灯的占空比为50%,延时200ms,然后关闭LED灯。
  7. 使用 while True循环不断执行流水灯控制。

评论