今天尝试一下用ADC,先看看原理图
main.lua 脚本
- --必须在这个位置定义PROJECT和VERSION变量
- --PROJECT:ascii string类型,可以随便定义,只要不使用,就行
- --VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
- PROJECT = "ADC"
- VERSION = "1.0.0"
- --加载日志功能模块,并且设置日志输出等级
- --如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
- require "log"
- LOG_LEVEL = log.LOGLEVEL_TRACE
- --[[
- 如果使用UART输出日志,打开这行注释的代码"--log.openTrace(true,1,115200)"即可,根据自己的需求修改此接口的参数
- 如果要彻底关闭脚本中的输出日志(包括调用log模块接口和Lua标准print接口输出的日志),执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同),例如:
- 1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false)即可
- 2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false,1)即可
- ]]
- --log.openTrace(true,1,115200)
- require "sys"
- require "net"
- --每1分钟查询一次GSM信号强度
- --每1分钟查询一次基站信息
- net.startQueryAll(60000, 60000)
- --此处关闭RNDIS网卡功能
- --否则,模块通过USB连接电脑后,会在电脑的网络适配器中枚举一个RNDIS网卡,电脑默认使用此网卡上网,导致模块使用的sim卡流量流失
- --如果项目中需要打开此功能,把ril.request("AT+RNDISCALL=0,1")修改为ril.request("AT+RNDISCALL=1,1")即可
- --注意:core固件:V0030以及之后的版本、V3028以及之后的版本,才以稳定地支持此功能
- ril.request("AT+RNDISCALL=0,1")
- --加载控制台调试功能模块(此处代码配置的是uart1,波特率115200)
- --此功能模块不是必须的,根据项目需求决定是否加载
- --使用时注意:控制台使用的uart不要和其他功能使用的uart冲突
- --使用说明参考demo/console下的《console功能使用说明.docx》
- --require "console"
- --console.setup(1, 115200)
- --加载硬件看门狗功能模块
- --根据自己的硬件配置决定:1、是否加载此功能模块;2、配置Luat模块复位单片机引脚和互相喂狗引脚
- --合宙官方出售的Air201开发板上有硬件看门狗,所以使用官方Air201开发板时,必须加载此功能模块
- --[[
- require "wdt"
- wdt.setup(pio.P0_30, pio.P0_31)
- ]]
- --加载网络指示灯和LTE指示灯功能模块
- --根据自己的项目需求和硬件配置决定:1、是否加载此功能模块;2、配置指示灯引脚
- --合宙官方出售的Air720U开发板上的网络指示灯引脚为pio.P0_1,LTE指示灯引脚为pio.P0_4
- require "netLed"
- pmd.ldoset(2,pmd.LDO_VLCD)
- netLed.setup(true,pio.P0_1,pio.P0_4)
- --网络指示灯功能模块中,默认配置了各种工作状态下指示灯的闪烁规律,参考netLed.lua中ledBlinktime配置的默认值
- --如果默认值满足不了需求,此处调用netLed.updateBlinkTime去配置闪烁时长
- --加载错误日志管理功能模块【强烈建议打开此功能】
- --如下2行代码,只是简单的演示如何使用errDump功能,详情参考errDump的api
- require "errDump"
- errDump.request("udp://ota.airm2m.com:9072")
- --加载远程升级功能模块【强烈建议打开此功能】
- --如下3行代码,只是简单的演示如何使用update功能,详情参考update的api以及demo/update
- --PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"
- --require "update"
- --update.request()
- --加载ADC功能测试模块
- require "testAdc"
- --启动系统框架
- sys.init(0, 0)
- sys.run()
testAdc.lua 脚本
- --- 模块功能:ADC功能测试.
- -- ADC测量精度(12bit)
- -- 每隔1s读取一次ADC值
- -- [url=home.php?mod=space&uid=40524]@author[/url] openLuat
- -- [url=home.php?mod=space&uid=2811445]@Module[/url] adc.testAdc
- -- [url=home.php?mod=space&uid=285243]@license[/url] MIT
- -- [url=home.php?mod=space&uid=855824]@copyright[/url] openLuat
- -- [url=home.php?mod=space&uid=1054466]@release[/url] 2018.12.19
- require"misc"
- module(...,package.seeall)
- --- ADC读取测试
- -- [url=home.php?mod=space&uid=1141835]@Return[/url] 无
- -- @usage read2()
- local function read2()
- --ADC2接口用来读取电压
- local ADC_ID = 2
- -- 读取adc
- -- adcval为number类型,表示adc的原始值,无效值为0xFFFF
- -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF
- local adcval,voltval = adc.read(ADC_ID)
- log.info("testAdc2.read",adcval,voltval)
- end
- --- ADC读取测试
- -- @return 无
- -- @usage read3()
- local function read3()
- --ADC3接口用来读取电压
- local ADC_ID = 3
- -- 读取adc
- -- adcval为number类型,表示adc的原始值,无效值为0xFFFF
- -- voltval为number类型,表示转换后的电压值,单位为毫伏,无效值为0xFFFF
- local adcval,voltval = adc.read(ADC_ID)
- log.info("testAdc3.read",adcval,voltval)
- end
- --- Vbat读取测试
- -- @retrun 无
- -- @usage vbatt()
- local function vbatt()
- log.info("vbatt.read",misc.getVbatt())
- end
- -- 开启对应的adc通道
- adc.open(2)
- adc.open(3)
- -- 定时每秒读取adc值
- sys.timerLoopStart(read2,1000)
- sys.timerLoopStart(read3,1000)
- sys.timerLoopStart(vbatt,1000)
开始烧录,再看一下日志输出
更多回帖