基于FlexLua低代码单片机实现模拟式旋钮AD电压采集

96 篇文章 0 订阅
32 篇文章 0 订阅

模拟式旋钮

本文基于 FlexLua 低代码单片机技术,无需复杂单片机C语言开发。即使新手也可很容易用FlexLua零门槛开发各种功能丰富稳定可靠的 IoT 硬件,更多学习教程可参考 FlexLua 官网。

一、本例程实现功能

调整旋钮的位置,获取当前位置旋钮的电压输出值,并通过 print() 函数在电脑串口调试终端打印输出当前旋钮的输出电压值。

二、模拟式旋钮介绍

  • 工作电流:26uA
  • 工作电压:3~5.5V
  • 电阻值范围:0~10K

17f50874fb67854bddad7f76f41deefd.jpeg

模拟式旋钮本质上就是一个电位器,当我们转动旋钮时就相当于调整器内部可变电阻的值,从而改变了其OUT引脚输出的电压值。通过AD转换计算出这个电压值后我们就可以精确的知道模拟旋钮当前转动的位置或角度。当模拟式旋钮作为电子设备的输入端时,我们就可以用它为人机交互提供一种更精细化的输入。

三、接线图

bc03274ab7809723ab4367d5125084f0.jpeg

三、材料清单

模拟式旋钮模块

四、完整代码

--配置Core的USB口以虚拟串口模式工作,这样print()输出的内容就可以在电脑串口终端上显示了
LIB_UsbConfig("CDC")
--配置AD电压采集功能,最大值采样值4096对应3.6V输入电压
--当通道采集满1个点时缓存满,每个点的采集时间间隔为300ms
LIB_ADConfig(1,300000)
--开始大循环
while(GC(1) == true)
do
--每隔300ms查询A0通道是否转换完成
--开发者也可以将模拟旋钮模块接至A1-A3中的任一通道,也可以多个通道接多个旋钮,用法都和下面一样
LIB_DelayMs(300)
A0_full_flag, A0_buf = LIB_ADCheckBufFull("A0")
if A0_full_flag == 1 then
--打印输出A0通道的AD采样值以及对应的电压值
print(string.format("A0=%04d Voltage=%.2fv", A0_buf[1], A0_buf[1]*3.6/4096.0))
end
end
--注意:程序中的300ms是任意选的时间,您也可以用更小或更大的时间间隔


如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

五、实验过程及结论

步骤一:将旋钮逆时针旋转到底

7ca6ae3768c91ccbd72c5e8015a1839c.jpeg

45d1e9254bba65ce26aac885e9701535.jpeg

可以看到模块此时输出的电压值在0V左右

步骤二:将旋钮顺时针旋转到底

b81a3403bb07b1c889787e64110c9fe4.jpeg

a7804f71675308c901e651078ede59f4.jpeg

可以看到模块此时输出的电压值为满压3.29V~3.30V,该值和模块的供电VCC有关。

结论:

通过上面实验可以看出模拟旋钮在两极的电压分别是0.00V左右、3.30V左右(VCC)。

在实际应用中我们不仅可以使用模块的电压值,也可以用其AD转换原始值来作为识别旋钮位置的值。对于精度要求高的场合,可能需要根据两极的值校准一下。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值