gpio_input_task.lua 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. --[[
  2. @module gpio_input_task
  3. @summary GPIO输入检测与LED联动示例
  4. @version 1.0
  5. @date 2025.10.21
  6. @author 拓毅恒
  7. @usage
  8. 本文件为GPIO输入检测功能的代码示例,核心业务逻辑为:
  9. 1. 初始化GPIO24为输入模式(可用杜邦线接稳压电源,高电平接3.3V,低电平接地)
  10. 2. 初始化GPIO26为输出模式,默认高电平(亮)
  11. 3. 启用输入消抖,消抖时间50 ms
  12. 4. 每500 ms读取一次GPIO24电平,并同步控制LED亮灭
  13. 5. 高电平→LED亮,低电平→LED灭
  14. ]]
  15. -- 配置gpio24为输入模式
  16. -- 配置GPIO26为输出模式
  17. local inputpin = 24
  18. local ledpin = 26
  19. local input = gpio.setup(inputpin, nil, gpio.PULLDOWN)
  20. local led = gpio.setup(ledpin, 1)
  21. gpio.debounce(inputpin, 50)
  22. --GPIO24检测到有高低电平输入后,会返回GPIO24当前获取到的电平为高还是低,高返回值为1,低返回值为0
  23. --将这个返回值,传给GPIO26,为0 则GPIO26输出低电平,为1则输出高电平
  24. local function controlgpio()
  25. local level = 0
  26. while true do
  27. level = gpio.get(inputpin)
  28. log.info("gpio","set netled level: ",level)
  29. gpio.set(ledpin, level)
  30. sys.wait(500)
  31. end
  32. end
  33. sys.taskInit(controlgpio)