main.lua 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "pwmdemo"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. -- sys库是标配
  6. _G.sys = require("sys")
  7. --添加硬狗防止程序卡死
  8. if wdt then
  9. wdt.init(9000)--初始化watchdog设置为9s
  10. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  11. end
  12. local PWM_ID = 0
  13. local rtos_bsp = rtos.bsp()
  14. if rtos_bsp == "EC618" then
  15. PWM_ID = 4 -- GPIO 27, NetLed
  16. elseif string.find(rtos_bsp,"EC718") then
  17. PWM_ID = 2 -- GPIO 25
  18. elseif rtos_bsp == "AIR101" or rtos_bsp == "AIR103" or rtos_bsp == "AIR601" then
  19. PWM_ID = 4 -- GPIO 4
  20. elseif rtos_bsp:startsWith("ESP32") then
  21. -- 注意, ESP32系列的PWM, PWM通道均与GPIO号相同
  22. -- 例如需要用GPIO1输出PWM, 对应的PWM通道就是1
  23. -- 需要用GPIO16输出PWM, 对应的PWM通道就是16
  24. if rtos_bsp == "ESP32C3" then
  25. PWM_ID = 12 -- GPIO 12
  26. elseif rtos_bsp == "ESP32S3" then
  27. PWM_ID = 11 -- GPIO 11
  28. end
  29. elseif rtos_bsp == "AIR105" then
  30. PWM_ID = 1 -- GPIO 17
  31. end
  32. sys.taskInit(function()
  33. log.info("pwm", "ch", PWM_ID)
  34. while 1 do
  35. -- 仿呼吸灯效果
  36. log.info("pwm", ">>>>>")
  37. for i = 10,1,-1 do
  38. pwm.open(PWM_ID, 1000, i*9) -- 频率1000hz, 占空比0-100
  39. sys.wait(100 + i*10)
  40. end
  41. for i = 10,1,-1 do
  42. pwm.open(PWM_ID, 1000, 100 - i*9)
  43. sys.wait(100 + i*10)
  44. end
  45. sys.wait(2000)
  46. end
  47. end)
  48. -- 用户代码已结束---------------------------------------------
  49. -- 结尾总是这一句
  50. sys.run()
  51. -- sys.run()之后后面不要加任何语句!!!!!