模拟式旋钮
一、本例程实现功能
调整旋钮的位置,获取当前位置旋钮的电压输出值,并通过 print() 函数在电脑串口调试终端打印输出当前旋钮的输出电压值。
二、模拟式旋钮介绍
- 工作电流:26uA
- 工作电压:3~5.5V
- 电阻值范围:0~10K
模拟式旋钮本质上就是一个电位器,当我们转动旋钮时就相当于调整器内部可变电阻的值,从而改变了其OUT引脚输出的电压值。通过AD转换计算出这个电压值后我们就可以精确的知道模拟旋钮当前转动的位置或角度。当模拟式旋钮作为电子设备的输入端时,我们就可以用它为人机交互提供一种更精细化的输入。
三、接线图
三、材料清单
名称 | 推荐购买链接(或者您可以自己制作) |
---|---|
模拟式旋钮模块 | 模块购买链接 |
四、完整代码
--配置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是任意选的时间,您也可以用更小或更大的时间间隔
五、实验过程及结论
步骤一:将旋钮逆时针旋转到底
可以看到模块此时输出的电压值在0V左右
步骤二:将旋钮顺时针旋转到底
可以看到模块此时输出的电压值为满压3.29V~3.30V,该值和模块的供电VCC有关。