LuatOS
直播中

春天一满屋

4年用户 364经验值
擅长:嵌入式技术
私信 关注

【合宙Air820开发板试用体验】之ADC

今天尝试一下用ADC,先看看原理图
0027.png
main.lua 脚本
  1. --必须在这个位置定义PROJECT和VERSION变量
  2. --PROJECT:ascii string类型,可以随便定义,只要不使用,就行
  3. --VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
  4. PROJECT = "ADC"
  5. VERSION = "1.0.0"

  6. --加载日志功能模块,并且设置日志输出等级
  7. --如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
  8. require "log"
  9. LOG_LEVEL = log.LOGLEVEL_TRACE
  10. --[[
  11. 如果使用UART输出日志,打开这行注释的代码"--log.openTrace(true,1,115200)"即可,根据自己的需求修改此接口的参数
  12. 如果要彻底关闭脚本中的输出日志(包括调用log模块接口和Lua标准print接口输出的日志),执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同),例如:
  13. 1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false)即可
  14. 2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false,1)即可
  15. ]]
  16. --log.openTrace(true,1,115200)

  17. require "sys"

  18. require "net"
  19. --每1分钟查询一次GSM信号强度
  20. --每1分钟查询一次基站信息
  21. net.startQueryAll(60000, 60000)

  22. --此处关闭RNDIS网卡功能
  23. --否则,模块通过USB连接电脑后,会在电脑的网络适配器中枚举一个RNDIS网卡,电脑默认使用此网卡上网,导致模块使用的sim卡流量流失
  24. --如果项目中需要打开此功能,把ril.request("AT+RNDISCALL=0,1")修改为ril.request("AT+RNDISCALL=1,1")即可
  25. --注意:core固件:V0030以及之后的版本、V3028以及之后的版本,才以稳定地支持此功能
  26. ril.request("AT+RNDISCALL=0,1")

  27. --加载控制台调试功能模块(此处代码配置的是uart1,波特率115200)
  28. --此功能模块不是必须的,根据项目需求决定是否加载
  29. --使用时注意:控制台使用的uart不要和其他功能使用的uart冲突
  30. --使用说明参考demo/console下的《console功能使用说明.docx》
  31. --require "console"
  32. --console.setup(1, 115200)

  33. --加载硬件看门狗功能模块
  34. --根据自己的硬件配置决定:1、是否加载此功能模块;2、配置Luat模块复位单片机引脚和互相喂狗引脚
  35. --合宙官方出售的Air201开发板上有硬件看门狗,所以使用官方Air201开发板时,必须加载此功能模块
  36. --[[
  37. require "wdt"
  38. wdt.setup(pio.P0_30, pio.P0_31)
  39. ]]

  40. --加载网络指示灯和LTE指示灯功能模块
  41. --根据自己的项目需求和硬件配置决定:1、是否加载此功能模块;2、配置指示灯引脚
  42. --合宙官方出售的Air720U开发板上的网络指示灯引脚为pio.P0_1,LTE指示灯引脚为pio.P0_4
  43. require "netLed"
  44. pmd.ldoset(2,pmd.LDO_VLCD)
  45. netLed.setup(true,pio.P0_1,pio.P0_4)
  46. --网络指示灯功能模块中,默认配置了各种工作状态下指示灯的闪烁规律,参考netLed.lua中ledBlinktime配置的默认值
  47. --如果默认值满足不了需求,此处调用netLed.updateBlinkTime去配置闪烁时长

  48. --加载错误日志管理功能模块【强烈建议打开此功能】
  49. --如下2行代码,只是简单的演示如何使用errDump功能,详情参考errDump的api
  50. require "errDump"
  51. errDump.request("udp://ota.airm2m.com:9072")

  52. --加载远程升级功能模块【强烈建议打开此功能】
  53. --如下3行代码,只是简单的演示如何使用update功能,详情参考update的api以及demo/update
  54. --PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"
  55. --require "update"
  56. --update.request()

  57. --加载ADC功能测试模块
  58. require "testAdc"

  59. --启动系统框架
  60. sys.init(0, 0)
  61. sys.run()
testAdc.lua 脚本
  1. --- 模块功能:ADC功能测试.
  2. -- ADC测量精度(12bit)
  3. -- 每隔1s读取一次ADC值
  4. -- [url=home.php?mod=space&uid=40524]@author[/url] openLuat
  5. -- [url=home.php?mod=space&uid=2811445]@Module[/url] adc.testAdc
  6. -- [url=home.php?mod=space&uid=285243]@license[/url] MIT
  7. -- [url=home.php?mod=space&uid=855824]@copyright[/url] openLuat
  8. -- [url=home.php?mod=space&uid=1054466]@release[/url] 2018.12.19

  9. require"misc"
  10. module(...,package.seeall)

  11. --- ADC读取测试
  12. -- [url=home.php?mod=space&uid=1141835]@Return[/url] 无
  13. -- @usage read2()
  14. local function read2()
  15.     --ADC2接口用来读取电压
  16.     local ADC_ID = 2
  17.     -- 读取adc
  18.     -- adcval为number类型,表示adc的原始值,无效值为0xFFFF
  19.     -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF
  20.     local adcval,voltval = adc.read(ADC_ID)
  21.     log.info("testAdc2.read",adcval,voltval)
  22. end

  23. --- ADC读取测试
  24. -- @return 无
  25. -- @usage read3()
  26. local function read3()
  27.     --ADC3接口用来读取电压
  28.     local ADC_ID = 3
  29.     -- 读取adc
  30.     -- adcval为number类型,表示adc的原始值,无效值为0xFFFF
  31.     -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF
  32.     local adcval,voltval = adc.read(ADC_ID)
  33.     log.info("testAdc3.read",adcval,voltval)
  34. end

  35. --- Vbat读取测试
  36. -- @retrun 无
  37. -- @usage vbatt()
  38. local function vbatt()
  39.     log.info("vbatt.read",misc.getVbatt())
  40. end

  41. -- 开启对应的adc通道
  42. adc.open(2)
  43. adc.open(3)

  44. -- 定时每秒读取adc值
  45. sys.timerLoopStart(read2,1000)
  46. sys.timerLoopStart(read3,1000)
  47. sys.timerLoopStart(vbatt,1000)
开始烧录,再看一下日志输出
0025.png



0026.png

更多回帖

发帖
×
20
完善资料,
赚取积分