led.lua 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --- 模块功能:LED闪灯模块
  2. -- @module led
  3. -- @author openLuat
  4. -- @license MIT
  5. -- @copyright openLuat
  6. -- @release 2018.02.04
  7. module(..., package.seeall)
  8. --- 闪烁指示灯
  9. -- @function ledPin ledPin(1)用pins.setup注册返回的方法
  10. -- @number light light-亮灯时间ms
  11. -- @number dark dark-灭灯时间ms
  12. -- @return nil
  13. -- @usage led.blinkPwm(lenPin,500,500)
  14. -- @usage 调用函数需要使用任务支持
  15. function blinkPwm(ledPin, light, dark)
  16. ledPin(1)
  17. sys.wait(light)
  18. ledPin(0)
  19. sys.wait(dark)
  20. end
  21. --- 等级指示灯
  22. -- @function ledPin ledPin(1)用pins.setup注册返回的方法
  23. -- @number bl 亮灯时间ms
  24. -- @number bd 灭灯时间ms
  25. -- @number cnt 重复次数 (等级的级别,亮灭1次算数字1)
  26. -- @number gap 间隔时间 (每次循环周期的间隔)
  27. -- @return nil
  28. -- @usage led.leveled(ledPin,200,200,4,1000)
  29. -- @usage 调用函数需要使用任务支持
  30. function levelLed(ledPin, bl, bd, cnt, gap)
  31. if not (ledPin and bl and bd and cnt and gap) then return end
  32. for i = 1, cnt do blinkPwm(ledPin, bl, bd) end
  33. sys.wait(gap)
  34. end
  35. --- 呼吸灯
  36. -- @function ledPin 呼吸灯的ledPin(1)用pins.setup注册返回的方法
  37. -- @return nil
  38. -- @usage led.breateLed(ledPin)
  39. -- @usage 调用函数需要使用任务支持
  40. function breateLed(ledPin)
  41. -- 呼吸灯的状态、PWM周期
  42. local bLighting, bDarking, LED_PWM = false, true, 18
  43. if bLighting then
  44. for i = 1, LED_PWM - 1 do
  45. ledPin(0)
  46. sys.wait(i)
  47. ledPin(1)
  48. sys.wait(LED_PWM - i)
  49. end
  50. bLighting = false
  51. bDarking = true
  52. ledPin(0)
  53. sys.wait(700)
  54. end
  55. if bDarking then
  56. for i = 1, LED_PWM - 1 do
  57. ledPin(0)
  58. sys.wait(LED_PWM - i)
  59. ledPin(1)
  60. sys.wait(i)
  61. end
  62. bLighting = true
  63. bDarking = false
  64. ledPin(1)
  65. sys.wait(700)
  66. end
  67. end