概述
ADKeyboard模块让你使用1路模拟口即可读取5个按键的状态,为Arduino节约IO口。 配合Arduino传感器扩展板可以完成使用多个按钮进行互动的作品。
技术规格
- 工作电压:控制器工作电压
- 数据类型:模拟信号
- 尺寸:40x33mm
- 接口类型:PH2.5-3P
引脚输出图
链接示意图
示例代码
//ADKeyboard Module
//Developed by DFRobot.com
//Last modified 30/11/2011
//Version 1.0
int adc_key_val[5] ={600,650, 700, 800, 900 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;
void setup()
{
pinMode(13, OUTPUT); //we'll use the debug LED to output a heartbeat
Serial.begin(9600); // 9600 bps
}
void loop()
{
adc_key_in = analogRead(0); // read the value from the sensor
digitalWrite(13,LOW);
key = get_key(adc_key_in); // convert into key press
if (key != oldkey) // if keypress is detected
{
delay(50); // wait for debounce time
adc_key_in = analogRead(0); // read the value from the sensor
key = get_key(adc_key_in); // convert into key press
if (key != oldkey)
{
oldkey = key;
if (key >=0){
digitalWrite(13,HIGH);
switch(key)
{
case 0:Serial.println("S1 OK");
break;
case 1:Serial.println("S2 OK");
break;
case 2:Serial.println("S3 OK");
break;
case 3:Serial.println("S4 OK");
break;
case 4:Serial.println("S5 OK");
break;
}
}
}
}
delay(100);
}
// Convert ADC value to key number
int get_key(unsigned int input)
{
int k;
for (k = 0; k < NUM_KEYS; k++)
{
if (input < adc_key_val[k])
{
return k;
}
}
if (k >= NUM_KEYS)k = -1; // No valid key pressed
return k;
}
Mind+(基于Scratch3.0)图形化编程
1、下载及安装软件。下载地址:https://www.mindplus.cc 详细教程:Mind+基础wiki教程-软件下载安装
2、切换到“上传模式”。 详细教程:Mind+基础wiki教程-上传模式编程流程
3、“扩展”中选择“主控板”中的“Arduino Uno”。 详细教程:Mind+基础wiki教程-加载扩展库流程
4、进行编程,程序如下图:
5、菜单“连接设备”,“上传到设备”
编程原则:
根据每个按钮按下显示的模拟值差值区间进行判断,可以取中值。
例如S1按下串口输出580,S2按下串口输出620,则取中间值600,即小于600就认为是S1按下了,大于600则认为是S2按下了。
以此类推S3 S4 S5的模拟值区间。
效果
打开串口监视器,按下不同的按钮输出对应的编号