air101#

本章介绍LuatOS的pwm库使用方式

简介#

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制

查阅air101_芯片规格书_v1.1.pdf可知Air101共有5路PWM通道,频率范围是3Hz-160kHz,占空比最大精度为1/256

我们可以通过pwm不同的占空比输出来调节LED小灯的亮度

硬件准备#

  • Air101开发板

  • LED小灯

接线示意

        PWM0  ------  +  
Air101                     LED
        GND   ------  -

软件部分#

接口文档可参考:pwm库

打开pwm输出#

打开PWM0通道的pwm输出,设置不同的占空比,小灯会有不同的亮度

PROJECT = "pwm"
VERSION = "1.0.0"

sys = require("sys")

sys.taskInit(function()
    while true do
        -- 开启pwm通道0,设置脉冲频率为1kHz,分频精度为100,占空比为10/100=10% 持续输出
        pwm.open(0, 1000, 10, 0, 100) -- 小灯微微发光
        sys.wait(1000)
        -- 开启pwm通道0,设置脉冲频率为1kHz,分频精度为100,占空比为50/100=50% 持续输出
        pwm.open(0, 1000, 50, 0, 100) -- 小灯中等亮度
        sys.wait(1000)
        -- 开启pwm通道0,设置脉冲频率为1kHz,分频精度为100,占空比为100/100=100% 持续输出
        pwm.open(0, 1000, 100, 0, 100) -- 小灯很高亮度
        sys.wait(1000)
    end
end)

sys.run()

呼吸灯效果#

呼吸灯效果就是小灯从不亮的状态一点点亮起,再一点点熄灭的效果,我们可以通过不断调高占空比让小灯一点点亮起,再不断调低占空比让小灯一点点熄灭

代码如下

PROJECT = "pwm"
VERSION = "1.0.0"

sys = require("sys")

sys.taskInit(function()
    while true do
        -- 占空比从0%到50%不断提升小灯亮度
        for i = 0, 50 do
            pwm.open(0, 1000, i, 0, 100)
            sys.wait(10)
        end
        sys.wait(1000)
        -- 占空比从50%到0%不断降低小灯亮度
        for i = 50, 0, -1 do
            pwm.open(0, 1000, i, 0, 100)
            sys.wait(10)
        end
        sys.wait(1000)
    end
end)

sys.run()