Micropython 呼吸灯,使用 machine.pwm

学习 ESP32 micropython,使用网路课件最方便:

三、PWM呼吸灯

利用PWM的调制作用,制作呼吸灯,pwm() 没有解释的很清楚,再来一个连接

PWM (脉宽调制)

from machine import Pin, PWM

pwm0 = PWM(Pin(0))      # 从1个引脚中创建PWM对象
pwm0.freq()             # 获取当前频率
pwm0.freq(1000)         # 设置频率
pwm0.duty()             # 获取当前占空比
pwm0.duty(200)          # 设置占空比
pwm0.deinit()           # 关闭引脚的 PWM

pwm2 = PWM(Pin(2), freq=20000, duty=512) # 在同一语句下创建和配置 PWM

 

套上 ESC32-C3 CORE开发板

保存 + 执行 breath_pwmt_ESP32-C3_USB.py

# 合宙CORE ESP32-C 核心板板载2颗LED +  16MB Flash(原4MB)
# D4(GPIO12) 高电平有效
# D5(GPIO13) 高电平有效

from machine import Pin, PWM
import time

# pwm2 = PWM(Pin(2), freq=20000, duty=512) # 在同一语句下创建和配置 PWM
led_d4 = PWM(Pin(12), freq=1024, duty=0) # create PWM object from D4-GPIO12
led_d5 = PWM(Pin(13), freq=1024, duty=1023) # create PWM object from D5-GPIO13
# led_d4.freq(1024)            # set PWM frequency from 1Hz to 40MHz
# led_d5.freq(1024)            # set PWM frequency from 1Hz to 40MHz
time.sleep_ms(1000)

while True:
    for i in range(0, 1024):
        led_d4.duty(i)
        led_d5.duty(1023-i)
        time.sleep_ms(1)
    for i in range(1023, -1, -1):
        led_d4.duty(i)
        led_d5.duty(1023-i)
        time.sleep_ms(1)

  

 

 LED D4/ D5 交替呼吸,心得:

  1. pwm2 = PWM(Pin(2), freq=20000, duty=512) # 在同一语句下创建和配置 PWM

  2. line 17 报错,竟然是 line 16 for 循环漏了冒号:。低级错误,呵呵

 

posted @ 2023-01-10 22:05  mickey_163  阅读(473)  评论(0编辑  收藏  举报