1.概述
五路AD按键模块兼容各种单片机控制板,如arduino系列单片机等。它5个按键只占用一个模拟量端口,节省资源,模拟量采集,按下不同的按键输出不同的电压,采用优质欧姆龙按键,灵敏耐用。 配合Arduino传感器扩展板可以完成使用多个按钮进行互动的作品。
2.规格参数
工作电压:5V
电流:20MA
最大功率:0.1W
工作温度:-10摄氏度 到 +50摄氏度
尺寸:47.6MM *23.8MM
数据类型:模拟信号
接口类型:PH2.5-3P
3.原理
我们看原理图,当我们没有按下按键时,输出到信号端S的OUT被R1拉低,此时我们读取到的是低电平0V;当我们按下按键SW1时,输出到信号端S的OUT相当于直接连接到了VCC,此时我们读取到的是高电平5V,或者模拟值1023;那当我们按下按键SW2时,我们读取到的信号OUT端电压就是R2与R1之间的电压,即VCC*R1/(R2+R1),约为4V,模拟值约为819;当我们按下按键SW3时,我们读取到的信号OUT端电压就是R2+R3与R1之间的电压,即VCC*R1/(R3+R2+R1),约为3V,模拟值约为614;当我们按下按键SW4时,我们读取到的信号OUT端电压就是R2+R3+R4与R1之间的电压,即VCC*R1/(R4+R3+R2+R1),约为2V,模拟值约为409;同理,当我们按下按键SW5时,我们读取到的信号OUT端电压就是R2+R3+R4+R5与R1之间的电压,即VCC*R1/(R5+R4+R3+R2+R1),约为1V,模拟值约为204。
4.接线图
5.测试代码
import utime
potentiometer = machine.ADC(26) #将GP26作为模拟信号采集引脚
voltage = 0
while True:
voltage = potentiometer.read_u16()
print(voltage) #打印模拟值
utime.sleep(0.1)
#按键没按下时打印NO
if 0< voltage <400 :
print(‘* NO *’)
#按键1按下时打印A1
if 53000< voltage <65536 :
print(‘A1’)
#按键2按下时打印A2
if 40000< voltage <53000 :
print(‘A2’)
#按键3按下时打印A3
if 27000< voltage <40000 :
print(‘A3’)
#按键4按下时打印A4
if 14000< voltage <27000 :
print(‘A4’)
#按键5按下时打印A5
if 500< voltage <14000 :
print(‘A5’)
6.代码说明
我们把读取的模拟值赋给变量val,串口监视器显示val的值,(我们默认设置为9600,可更改)。
我们对读取到的模拟值进行判断,当模拟值低于400时,我们判断按键没有被按下;当模拟值处于53000到65536之间时,我们判断按键1被按下;当模拟值处于40000到53000之间时,我们判断按键2被按下;当模拟值处于27000到40000之间时,我们判断按键3被按下;当模拟值处于14000到27000之间时,我们判断按键4被按下;否则当模拟值14000到500时,我们判断按键5被按下;我们如果只用固定的一个值就难免会有误差,所以我们使用区间来判断。
7.测试结果
上传测试代码成功,上电后,打开串口监视器并设置波特率为9600;当我们按下按键,串口监视器打印出对应的信息,如下图。
8.资料下载
Arduino IDE/Mixly/Scratch/pyhon编程使用资料下载链接
链接:https://pan.baidu.com/s/1ncVJtmnPauIehcrQLRDR1g
提取码:keye