Led_test.lua 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. --[[
  2. @module Led_test
  3. @summary Led_test测试功能模块
  4. @version 1.0
  5. @date 2025.10.15
  6. @author 马亚丹
  7. @usage
  8. 本demo演示的功能为:使用Air780EPM,1.3开发板,GPIO27,即LTE(板子上的NET)指示灯模拟网络灯的亮灭显示。
  9. 工作状态说明,优先级顺序(1-5表示从高到低),高优先级状态会直接覆盖低优先级状态
  10. 1. "FLYMODE" 飞行模式
  11. 2. "SIMERR" 未检测到SIM卡或者SIM卡锁pin码等SIM卡异常
  12. 3. "SCK" socket已连接上后台
  13. 4. "GPRS" 已附着GPRS数据网络
  14. 5. "IDLE" 未注册GPRS网络
  15. "NULL":功能关闭状态
  16. 各种工作状态下配置的点亮、熄灭时长(单位毫秒),默认值:
  17. NULL = { 0, 0xFFFF }, --常灭
  18. FLYMODE = { 0, 0xFFFF }, --常灭
  19. SIMERR = { 300, 5700 }, --亮300毫秒,灭5700毫秒
  20. IDLE = { 300, 3700 }, --亮300毫秒,灭3700毫秒
  21. GPRS = { 300, 700 }, --亮300毫秒,灭700毫秒
  22. SCK = { 100, 100 }, --亮100毫秒,灭100毫秒
  23. 核心逻辑:
  24. 1.自定义LED灯不同状态的闪烁时间
  25. 2.初始化LED,打开LED网络灯功能;
  26. 3.LED灯状态模拟,通过sys.publish("工作状态", 状态):手动模拟状态触发,控制 LED灯的亮灭状态
  27. 4.关闭常规LED灯功能(避免冲突),演示呼吸灯效果
  28. ]]
  29. -- 网络状态指示灯演示示例
  30. -- 注意:需在支持gpio和sys库的环境中运行(如嵌入式Lua开发板)
  31. -- 引入必要模块
  32. local netLed = require("netLed")
  33. -- 初始化网络指示灯引脚(GPIO27,根据硬件调整)
  34. -- 初始低电平(灭)
  35. local ledPin = gpio.setup(27, 0, gpio.PULLUP)
  36. --netLed.setup(true, 27)
  37. -- 自定义LED灯不同状态的闪烁时间(增强区分度)
  38. -- SIM错误:300ms亮/1700ms灭(2秒周期)
  39. netLed.setBlinkTime("SIMERR", 300, 1700)
  40. -- 未注册:500ms亮/2500ms灭(3秒周期)
  41. netLed.setBlinkTime("IDLE", 500, 2500)
  42. -- GPRS附着:200ms亮/200ms灭(400ms周期,中速闪)
  43. netLed.setBlinkTime("GPRS", 200, 200)
  44. -- Socket连接:100ms亮/50ms灭(150ms周期,快速闪)
  45. netLed.setBlinkTime("SCK", 100, 50)
  46. -- 主任务:初始化指示灯并模拟网络状态变化
  47. local function ledtest()
  48. while true do
  49. -- 开启网络灯功能,网络灯用GPIO27,关闭LTE灯(LTE引脚设为空不处理)
  50. netLed.setup(true, 27)
  51. -- 状态1:初始状态(未注册网络,IDLE)
  52. log.info("LED状态", "未注册网络(IDLE):500ms亮/2500ms灭")
  53. -- 关闭飞行模式
  54. sys.publish("FLYMODE", false)
  55. -- SIM正常
  56. sys.publish("SIM_IND", "RDY")
  57. -- 未附着GPRS(触发IDLE状态)
  58. sys.publish("IP_LOSE")
  59. -- 无Socket连接
  60. sys.publish("SOCKET_ACTIVE", false)
  61. -- 维持12秒(4个3秒周期)
  62. sys.wait(12000)
  63. -- 状态2:SIM卡错误(SIMERR)
  64. log.info("LED状态", "SIM卡错误(SIMERR):300ms亮/1700ms灭")
  65. -- SIM异常(触发SIMERR状态)
  66. sys.publish("SIM_IND", "ERROR")
  67. -- 维持8秒(4个2秒周期)
  68. sys.wait(8000)
  69. -- 状态3:已附着GPRS(GPRS)
  70. log.info("LED状态", "已附着GPRS:200ms亮/200ms灭(中速闪)")
  71. -- 恢复SIM正常,覆盖"ERROR"
  72. sys.publish("SIM_IND", "RDY") --
  73. -- 发布IP_READY事件,明确触发GPRS状态(参数格式正确)
  74. sys.publish("IP_READY", "192.168.1.1", true)
  75. -- 确保无Socket连接(避免干扰)
  76. sys.publish("SOCKET_ACTIVE", false)
  77. -- 维持8秒(20个400ms周期)
  78. sys.wait(8000)
  79. -- 状态4:Socket已连接(SCK)
  80. log.info("LED状态", "Socket连接(SCK):100ms亮/50ms灭(快速闪)")
  81. -- 有Socket连接(触发SCK状态)
  82. sys.publish("SOCKET_ACTIVE", true)
  83. -- 维持6秒(40个150ms周期)
  84. sys.wait(6000)
  85. -- 状态5:飞行模式(FLYMODE,默认常灭)
  86. log.info("LED状态", "飞行模式(FLYMODE):常灭")
  87. -- 开启飞行模式(触发FLYMODE状态)
  88. sys.publish("FLYMODE", true)
  89. -- 维持5秒
  90. sys.wait(5000)
  91. -- 状态6:呼吸灯模式(独占引脚)
  92. log.info("LED状态", "呼吸灯模式:平滑渐变亮灭")
  93. -- 关闭常规LED功能(释放引脚,避免冲突)
  94. netLed.setup(false, 27)
  95. local n = 0
  96. --呼吸灯循环10次
  97. while n < 10 do
  98. -- 传入Led灯引脚
  99. netLed.setupBreateLed(ledPin)
  100. -- 呼吸灯循环间隔
  101. sys.wait(20)
  102. n = n + 1
  103. end
  104. end
  105. end
  106. sys.taskInit(ledtest)