脉宽调制(PWM)
参考: https://doc.itprojects.cn/A0001.micropython.esp32/01.doc.5ec0ceed6860b084b258559aa19c2534/index.html
PWM(Pulse Width Modulation)简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在测量、通信、工控等方面
成员函数功能说明
- pwm.freq(): 获得当前的PWM频率.
- pwm.freq(0-1023): 设置PWM频率:0-1023
- pwm.duty():获得当前的PWM占空⽐:0-8192
- pwm.duty(0-100):设置占空⽐:0-100
- deinit(): 关闭PWM
- freq(Pin,freq,duty): 设置PWM频率
呼吸灯
Python 控制 PWM
查看 ESP32 的官方文档对于 PWM 的描述:
https://docs.micropython.org/en/latest/esp32/quickref.html#pwm-pulse-width-modulation
python
from machine import Pin, PWM
pwm0 = PWM(Pin(0))
freq = pwm0.freq()
pwm0.freq(1000)
duty = pwm0.duty()
pwm0.duty(256)
有几个注意点:
- 需要可以具备输出功能的IO口,上述代码选择的是 GPIO0
- 占空比的数值在 0~1023 之间
呼吸灯效果
正常亮灯
python
from machine import Pin # 导入 Pin (开发板中 Pin 代表 GPIO)
from time import sleep_ms # 导入时间
LED = Pin(15, Pin.OUT) # 定义一个 LED 灯,D25 脚,输出
while 1:
print('hello world !')
LED.on() # 灯亮
sleep_ms(500) # 等待 500 毫秒
LED.off() # 灯灭
sleep_ms(500)
呼吸灯实现
python
from machine import Pin, PWM
from time import sleep_ms
LED = Pin(15, Pin.OUT)
PWM_LED = PWM(LED)
while 1:
for i in range(1023, -1, -1):
PWM_LED.duty(i)
sleep_ms(1)
for i in range(1024):
PWM_LED.duty(i)
sleep_ms(1)