main.lua 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "ADC"
  3. VERSION = "1.0.0"
  4. -- sys库是标配
  5. sys = require("sys")
  6. --=============================================================
  7. local function MY_ADC()
  8. -- 读取CPU温度, 单位为0.001摄氏度, 是内部温度, 非环境温度
  9. while 1 do
  10. sys.wait(1000)
  11. adc.open(adc.CH_CPU)
  12. local temp = adc.get(adc.CH_CPU)
  13. log.info("CPU温度=",temp/1000)
  14. --adc.close(adc.CH_CPU)
  15. -- adc.CH_CPU,CPU内部温度的通道id,内部通道,直接获取,不占用ADC 0-3,不外接任何电路
  16. -- 读取VBAT供电电压, 单位为mV
  17. --=============================================================
  18. sys.wait(1000)
  19. adc.open(adc.CH_VBAT)
  20. local vbat = adc.get(adc.CH_VBAT)
  21. log.info("VBAT供电电压",vbat/1000)
  22. --adc.close(adc.CH_VBAT)
  23. -- adc.CH_VBAT,VBAT供电电压的通道id,内部通道,直接获取,不占用ADC 0-3,不外接任何电路
  24. -- adc.CH_CPU 和 adc_CH_VBAT 在做读取动作之前,不需要像 ADC 0-3通道一样先打开adc.setRange(range)函数
  25. --=============================================================
  26. sys.wait(1000)
  27. --修改IO电平,都可以通过LuatOS软件设置为1.8V/2.8V/3.0V/3.3V
  28. pm.ioVol(pm.IOVOL_ALL_GPIO, 3300)
  29. -- 设置ADC引脚的测量范围0-3.6V,这种方式被测电压不可经过外部电阻分压后再挂在ADC上;
  30. adc.setRange(adc.ADC_RANGE_MAX)
  31. -- 打开adc通道0,并读取
  32. adc.open(0)
  33. local ADC0=adc.get(0)
  34. log.info("adc0=", ADC0,"mV") -- 返回电压值;
  35. --=============================================================
  36. end
  37. end
  38. --=============================================================
  39. sys.taskInit(MY_ADC)
  40. --=============================================================
  41. -- 用户代码已结束---------------------------------------------
  42. -- 结尾总是这一句
  43. sys.run()
  44. -- sys.run()之后后面不要加任何语句!!!!!