main.lua 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. --[[
  2. 1. Air101,Air103 模块上的ADC0脚-PA1, 0~2.4v,不要超过范围使用!!!
  3. 2. Air101,Air103模块上的ADC1脚-PA4, 0~2.4v,不要超过范围使用!!!
  4. 3. Air103 模块上的ADC2脚-PA2, 0~2.4v,不要超过范围使用!!!
  5. 4. Air103 模块上的ADC3脚-PA3, 0~2.4v,不要超过范围使用!!!
  6. 5. Air101,Air103 adc.CH_CPU 为内部温度 ,adc.CH_VBAT为VBAT
  7. 6. Air105 adc参考电压是1.88V,所有通道一致,
  8. 7. Air105内部分压没有隔离措施,在开启内部分压后,量程有所变化,具体看寄存器手册,1~5分压后能测到3.6,6通道能接近5V,但是不能直接测5V,可以测4.2V 0通道是始终开启无法关闭分压。
  9. 8. Air780E内部ADC接口为12bits 外部直流分压为0-3.4V
  10. 9. Air780E内部具有2个ADC接口,ADC0 -- AIO3 ADC1 -- AIO4
  11. 10. 特殊通道, CPU内部温度Temp -- adc.CH_CPU 主供电脚电压 VBAT -- adc.CH_VBAT
  12. ]]
  13. -- LuaTools需要PROJECT和VERSION这两个信息
  14. PROJECT = "adcdemo"
  15. VERSION = "1.0.0"
  16. log.info("main", PROJECT, VERSION)
  17. -- 一定要添加sys.lua !!!!
  18. sys = require("sys")
  19. -- 添加硬狗防止程序卡死
  20. if wdt then
  21. wdt.init(9000) -- 初始化watchdog设置为9s
  22. sys.timerLoopStart(wdt.feed, 3000) -- 3s喂一次狗
  23. end
  24. local rtos_bsp = rtos.bsp()
  25. function adc_pin() -- 根据不同开发板,设置ADC编号
  26. if rtos_bsp == "AIR101" then -- Air101开发板ADC编号
  27. return 0,1,255,255,adc.CH_CPU ,adc.CH_VBAT
  28. elseif rtos_bsp == "AIR103" then -- Air103开发板ADC编号
  29. return 0,1,2,3,adc.CH_CPU ,adc.CH_VBAT
  30. elseif rtos_bsp == "AIR105" then -- Air105开发板ADC编号
  31. return 0,5,6,255,255,255
  32. elseif rtos_bsp == "ESP32C3" then -- ESP32C3开发板ADC编号
  33. return 0,1,2,3,adc.CH_CPU , 255
  34. elseif rtos_bsp == "ESP32C2" then -- ESP32C2开发板ADC编号
  35. return 0,1,2,3,adc.CH_CPU , 255
  36. elseif rtos_bsp == "ESP32S3" then -- ESP32S3开发板ADC编号
  37. return 0,1,2,3,adc.CH_CPU , 255
  38. elseif rtos_bsp == "EC618" then --Air780E开发板ADC编号
  39. return 0,1,255,255,adc.CH_CPU ,adc.CH_VBAT
  40. else
  41. log.info("main", "define ADC pin in main.lua")
  42. return 0, 0,0,0,0,0
  43. end
  44. end
  45. local adc_pin_0,adc_pin_1,adc_pin_2,adc_pin_3,adc_pin_temp,adc_pin_vbat=adc_pin()
  46. sys.taskInit(function()
  47. if rtos_bsp == "AIR105" then
  48. adc.setRange(adc.ADC_RANGE_3_6) --开启的内部分压,可以把量程扩大
  49. end
  50. if adc_pin_0 and adc_pin_0 ~= 255 then adc.open(adc_pin_0) end
  51. if adc_pin_1 and adc_pin_1 ~= 255 then adc.open(adc_pin_1) end
  52. if adc_pin_2 and adc_pin_2 ~= 255 then adc.open(adc_pin_2) end
  53. if adc_pin_3 and adc_pin_3 ~= 255 then adc.open(adc_pin_3) end
  54. if adc_pin_temp and adc_pin_temp ~= 255 then adc.open(adc_pin_temp) end
  55. if adc_pin_vbat and adc_pin_vbat ~= 255 then adc.open(adc_pin_vbat) end
  56. -- 下面是循环打印, 接地不打印0也是正常现象
  57. -- ADC的精度都不会太高, 若需要高精度ADC, 建议额外添加adc芯片
  58. while true do
  59. if adc_pin_0 and adc_pin_0 ~= 255 then
  60. log.debug("adc", "adc" .. tostring(adc_pin_0), adc.get(adc_pin_0)) -- 若adc.get报nil, 改成adc.read
  61. end
  62. if adc_pin_1 and adc_pin_1 ~= 255 then
  63. log.debug("adc", "adc" .. tostring(adc_pin_1), adc.get(adc_pin_1))
  64. end
  65. if adc_pin_2 and adc_pin_2 ~= 255 then
  66. log.debug("adc", "adc" .. tostring(adc_pin_2), adc.get(adc_pin_2))
  67. end
  68. if adc_pin_3 and adc_pin_3 ~= 255 then
  69. log.debug("adc", "adc" .. tostring(adc_pin_3), adc.get(adc_pin_3))
  70. end
  71. if adc_pin_temp and adc_pin_temp ~= 255 then
  72. log.debug("adc", "CPU TEMP", adc.get(adc_pin_temp))
  73. end
  74. if adc_pin_vbat and adc_pin_vbat ~= 255 then
  75. log.debug("adc", "VBAT", adc.get(adc_pin_vbat))
  76. end
  77. sys.wait(500)
  78. end
  79. -- 若不再读取, 可关掉adc, 降低功耗, 非必须
  80. if adc_pin_0 and adc_pin_0 ~= 255 then adc.close(adc_pin_0) end
  81. if adc_pin_1 and adc_pin_1 ~= 255 then adc.close(adc_pin_1) end
  82. if adc_pin_2 and adc_pin_2 ~= 255 then adc.close(adc_pin_2) end
  83. if adc_pin_3 and adc_pin_3 ~= 255 then adc.close(adc_pin_3) end
  84. if adc_pin_temp and adc_pin_temp ~= 255 then adc.close(adc_pin_temp) end
  85. if adc_pin_vbat and adc_pin_vbat ~= 255 then adc.close(adc_pin_vbat) end
  86. end)
  87. -- 用户代码已结束---------------------------------------------
  88. -- 结尾总是这一句
  89. sys.run()
  90. -- sys.run()之后后面不要加任何语句!!!!!