nodeMCU Lua ESP8266第二課 PWM呼吸燈

    寫在前面的話:個人學習筆記,拋磚引玉,希望有興趣的人加入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 112IO指數

clock 11000pwm頻率

duty 01023pwm佔空比,最大102310bit

  

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       定時器ID0-6)或對象,

interval_ms  定時器間隔(以毫秒爲單位)。最大值是6870947

mode       定時器模式:

tmr.ALARM_SINGLE     一次性報警(不需要調用tmr.unregister()

tmr.ALARM_SEMI       手動重複報警(調用tmr.start()重啓)

tmr.ALARM_AUTO      自動重複報警

func(timer) 用定時器對象作爲參數調用的回調函數

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章