main.lua 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "pwmdemo"
  3. VERSION = "1.0.1"
  4. --[[
  5. 注意:Air8000_V2007及以上固件复用方式已经改为使用LuatIO工具。
  6. 本demo也已经使用LuatIO方式进行复用,代码中仅初始化PWM所用IO,没有进行复用操作。
  7. 运行本demo需要将pins_Air8000.json文件一并烧录进Air8000中,才能正常使用PWM功能。
  8. LuatIO工具使用方法+下载地址:https://docs.openluat.com/air8000/common/luatio/?h=luatio
  9. ]]
  10. log.info("main", PROJECT, VERSION)
  11. -- sys库是标配
  12. _G.sys = require("sys")
  13. --添加硬狗防止程序卡死
  14. if wdt then
  15. wdt.init(9000) -- 初始化watchdog设置为9s
  16. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  17. end
  18. local PWM_ID = 4 -- 代码中使用pwm通道4,如需使用其他pwm通道请查看Air8000/pwm使用指南/pwm通道说明。
  19. sys.taskInit(function()
  20. -- 设置演示所用的IO GPIO21 且初始化电平为低
  21. gpio.setup(21, 0)
  22. log.info("pwm", "ch", PWM_ID)
  23. while 1 do
  24. -- 仿呼吸灯效果
  25. log.info("pwm", ">>>>>")
  26. -- 占空比从90%(i=10时)到9%(i=1时)
  27. for i = 10,1,-1 do
  28. pwm.open(PWM_ID, 1000, i*9) -- 频率1000hz, 占空比0-100
  29. sys.wait(100 + i*10)
  30. end
  31. -- 占空比从10%增加到90%
  32. for i = 10,1,-1 do
  33. pwm.open(PWM_ID, 1000, 100 - i*9)
  34. sys.wait(100 + i*10)
  35. end
  36. sys.wait(2000)
  37. end
  38. end)
  39. -- 用户代码已结束---------------------------------------------
  40. -- 结尾总是这一句
  41. sys.run()
  42. -- sys.run()之后后面不要加任何语句!!!!!