键盘输入,我只用一个端口
本帖最后由 老来疯 于 2015-6-11 03:37 编辑一直想做一个小玩意,Arduino 最好学,可是我需要的端口他不够,郁闷很长时间,终于有了想发,
看图说话。
/*
使用一个端口(如: A0,得到 11 个键
2015.06.
*/
void setup()
{
Serial.begin(9600); //在监视器看看结果
}
void loop()
{
delay(500);
int V1 = analogRead(A0);
float vol = V1 * (5.0 / 1023.0); //我们将 V1 的值换算成实际电压值存入浮点型变量 vol
if ( V1 > 0) { //如果 A0 端口大于 0,认为有键按下
//******* 在这做点文章 也许更好 *******
int m = ( V1 - V1 % 100) / 100;
// 能加一个 四舍五入的函数,电路就简单,我太菜。
// 能加一个 map() 函数,就能映射更多的键。
// A0 端口的值减去他除以100的模,得到整百数,再除以100 得到一位整数,
// ************
switch (m) { // m 值对应所按的键
case 0:
// 对应键值 0 的 程序, 下面可以检查 按键值 和 对应的 电压值
Serial.print( m ); //输出 0 键值到 PC ,
Serial.print("Pin ; vol");
Serial.println(vol); //输出 0 键值的电压值到 PC ,
break;
case 1: //
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 2:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 3:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 4:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 5:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 6:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 7:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 8:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 9:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
case 10:
Serial.print( m );
Serial.print("Pin ; vol");
Serial.println(vol);
break;
}// endswitch
}// end if
}// end loop
对不起,图片中有错, R12 应该去掉 有点启发,按照楼主的思路,可以弄一个“按键式的电位器”,上面可以有1024个键,第一个键的值是1,第二个2.。。。。一直到1023,这样也只用得了一个接口,但似乎就用不了组合键了,就算把ctrl,atl等键单独用其他接口来实现,也无法监听同时按下多个字母键的情况。 liyoubin37 发表于 2015-6-11 08:23 static/image/common/back.gif
有点启发,按照楼主的思路,可以弄一个“按键式的电位器”,上面可以有1024个键,第一个键的值是1,第二个2 ...
我想使用“与”运算即可实现组合键输入,能不能实现1024个键,没有测试过,不过,既然是计算机,用软件的方法应该能解决。但是,硬件的 ADC 分辨率只有 10 比特,再有就是电路的精度和稳定度是最大的障碍。
所以,从实用的角度上来说,应该选择其他方案。学了 Arduino ,不要指望他什么都能干。 输入口不够用74HC165扩展,ADC键盘是山寨MP3的做法:)。太不稳定,按键磨损容易改变阻值出错 Ansifa 发表于 2015-6-11 13:08 static/image/common/back.gif
输入口不够用74HC165扩展,ADC键盘是山寨MP3的做法。太不稳定,按键磨损容易改变阻值出错
扩展输入口,不如换其他 板, 站在别人的肩膀上去攀登更高的高峰,不太稳定的话,看看是否有办法解决,
应该有解决办法。 用久了是会不准的,电阻也有温飘,所以不能弄1024个键那么多。键值读取,也得有一定的容错范围。我弄了个25键的键盘,和楼主的思路差不多。 本帖最后由 pumpitup 于 2015-9-17 23:12 编辑
没有电阻的意思是断开还是短接?如果是断开的话感觉不会有电压的样子,如果是连接的话那电容也没用了吧
页:
[1]