寫在前面的話:個人學習筆記,拋磚引玉,希望有興趣的人加入QQ羣415469069一起討論,歡迎有共同愛好的人。
本教程以ESP-12N,CP2102開發板爲例進行講解。
一、代碼。
將代碼保存爲pwm.lua。調試方法如果不會,請參考第一課教程。
--pwm.lua
pin = 4
dutyMAX = 1000
dutyMIN = 100
flag = 0
pwm.setup(pin,100,dutyMAX)
pwm.start(pin)
function changeDuty()
local duty = pwm.getduty(pin)
if(flag == 0) then
if (duty > dutyMIN) then
pwm.setduty(pin,duty - 1)
else
flag = 1
end
else
if (duty < dutyMAX) then
pwm.setduty(pin,duty + 1)
else
flag = 0
end
end
end
tmr.alarm(0 , 1 , tmr.ALARM_AUTO , changeDuty)
1、Pin=4,因爲開發板在此管腳處焊的有個LED燈,所以用這個。說明:
2、管腳初始化PWM
pwm.setup(pin,clock,duty) 參數: pin 1〜12,IO指數 clock 1〜1000,pwm頻率 duty 0〜1023,pwm佔空比,最大1023(10bit) |
3、自定義函數
function 函數名() 代碼塊 end |
4、if流程控制
if (判斷條件) then [條件滿足是執行的語句] else [條件不滿足是執行的語句] end |
5、定時器
NodeMCU提供7個靜態定時器,編號爲0-6。
使用此計時器釋放資源時,請調用tmr.unregister()。
tmr.alarm([id/ref], interval_ms, mode, func()) 參數: id/ref 定時器ID(0-6)或對象, interval_ms 定時器間隔(以毫秒爲單位)。最大值是6870947。 mode 定時器模式: tmr.ALARM_SINGLE 一次性報警(不需要調用tmr.unregister()) tmr.ALARM_SEMI 手動重複報警(調用tmr.start()重啓) tmr.ALARM_AUTO 自動重複報警 func(timer) 用定時器對象作爲參數調用的回調函數 |