NodeMCU的D1~12管脚均具有PWM功能(除了D0)。 PWM频率可以设置范围1~1000Hz,占空比设置范围为0~1023(对应0%~100%)
资料包中文件名为“pwm.lua”。
将“init.lua”文件中“fileName.lua”修改为“pwm.lua”,“fileName.lc”修改为“pwm.lc”。修改完成后下载。 PWM功能程序代码:
1 print("PWM Function test")
2 pwm.setup(1,1000,1023);
3 pwm.start(1);
4
5 local r=512;
6 local flag=1;
7 tmr.alarm(2,100,1,function()
8 pwm.setduty(1,r);
9 if flag==1 then
10 r=r-50; if r《0 then flag=0 r=0 end
11 else
12 r= r+50; if r>1023 then flag=1 r=1023 end
13 end
14 end)
程序第1行打印字符信息。
第2行设置端口1的频率为1000Hz,占空比为1023.
第3行启动PWM输出。
第5~14行设置了定时器2,每隔100毫秒,对占空比r进行增加或者减小循环操作。通过变量flag进行记录。 下载程序,通过万用表或者示波器可以看到D1端口的电平输出变化。如果在D1端口和GND之间接入一个LED二极管。可以查看到二极管的亮度循环变化。
Tips:LED的长管脚为阳极,接D1;短管脚为阴极,接GND。
执行程序的Log如下:
1 NodeMCU 0.9.6 build 20150406 powered by Lua 5.1.4
2
3
4 ESP8266 Started
5 Compile File:pwm.lua
6 Remove File:pwm.lua
7 PWM Function test
8 >