主要学习:使用MicroPython控制单色LED呼吸灯的代码
代码分析
1.
from machine import Timer, PWM
import time
导入了Timer和PWM模块并调用了time模块中的time函数。这段代码正在使用Timer和PWM模块的功能来控制LED,而time函数则用于计算时间
2.
tim = Timer(Timer.TIMER1, Timer.CHANNEL1, mode=Timer.MODE_PWM)
由于PWM信号需要来源自定时器,所以新建一个定时器对象。使用Timer模块来创建一个计时器对象tim,并设置计时器对象为TIMER1通道1,并将其模式设置为PWM模式
可设置的参数:a.定时器X,b..通道X,c.PWM模式
目前K210总共有3个定时器,每个定时器有4个通道
3.
//pwm = machine.PWM(tim, freq, duty, pin, enable=True)
pwm = PWM(tim, freq=500000, duty=50, pin=LED_PIN)
使用PWM模块创建一个PWM控制对象pwm,并将其绑定到先前创建的计时器对象tim上
参数:
tim
: 每个PWM依赖一个定时器来产生波形, 所以这里需要传一个定时器对象,这个定时器对象必须初始化时必须指定定时器 ID 和通道号
freq
: PWM 波形频率
duty
: PWM 占空比, 指高电平占整个周期的百分比,取值:[0,100]
[pin]
: PWM 输出引脚。 实际物理引脚IO编号。
enable
: 是否立即开始产生波形,默认位True
,及对象生成后立即开始在指定的引脚上产生 PWM 波形
分析:设置PWM频率为500000Hz,占空比为50%(即高电平和低电平的时间相等),并将其输出引脚设置为LED_PIN(LED的引脚)。这将会导致LED灯以500000Hz的频率闪烁,并且亮度的变化量将由占空比决定。
4.
duty=0
add = True
while True:
if add:
duty += 5
else:
duty -= 5
if duty > 100:
duty = 100
add = False
elif duty < 0:
duty = 0
add = True
time.sleep(0.05)
pwm.duty(duty)
使用PWM模块对LED进行闪烁灯特效(渐变亮/暗)。首先将占空比duty设置为0,并在while循环中创建一个变量add,用于判断占空比是在增加还是减少。在循环中不断将duty增加或减少5,直到duty大于100或者小于0时,改变add的值,使得duty的值逐渐增加或减少。同时每次改变duty的值后,使用pwm.duty()方法更新PWM的占空比。在每次循环中,使用time.sleep()方法暂停0.05秒,以实现渐变效果。这将导致LED灯在0%亮度和100%亮度之间忽隐忽现地闪烁。
补充:True是Python中的一个布尔值,表示真或假。在这段代码中,True表示add的初始值是真,也就是占空比初始是增加的。在while循环中,add的值会不停地改变,从而控制占空比的渐变。