【arduino自制扩展】2块钱自制完美无抖动电阻矩阵键盘,无需扩展IC,支持3点触控~
前几天10块钱弄来了100来个微型开关,闲来没事就想弄个矩阵键盘玩玩,由于图便宜,就直接搞了个电阻键盘,没想到精度确相当高,即使延迟1毫秒也毫无抖动,说明电阻键盘也是很好用的,通过软件可以实现微延迟“3点触控”,还是相当划算的~成本一共也就2块钱左右,却完全可以媲美或者超过淘宝上30多的矩阵键盘,自己动手才是王道~
电路图:
arduino主控器:
键盘:
背面自制EPP封胶:
演示视频:http://player.youku.com/player.php/sid/XMzQzNzMwMDY0/v.swf
演示代码:
#define NOTE_D0 -1
#define NOTE_D1 294
#define NOTE_D2 330
#define NOTE_D3 350
#define NOTE_D4 393
#define NOTE_D5 441
#define NOTE_D6 495
#define NOTE_D7 556
#define NOTE_DL1 147
#define NOTE_DL2 165
#define NOTE_DL3 175
#define NOTE_DL4 196
#define NOTE_DL5 221
#define NOTE_DL6 248
#define NOTE_DL7 278
#define NOTE_DH1 589
#define NOTE_DH2 661
#define NOTE_DH3 700
#define NOTE_DH4 786
#define NOTE_DH5 882
#define NOTE_DH6 990
#define NOTE_DH7 112
#define WHOLE 1
#define HALF 0.5
#define QUARTER 0.25
#define EIGHTH 0.25
#define SIXTEENTH 0.625
int tonePin=8;//蜂鸣器的pin
void setup()
{
pinMode(tonePin,OUTPUT);//设置蜂鸣器的pin为输出模式
}
void loop()
{
int v;
float te;
v=analogRead(2);
te=v/4.5 ;
v=(int)te;
int va;
float tem;
va=analogRead(1);
tem=va/4.5 ;
va=(int)tem;
int val;
float temp;
val=analogRead(0);
temp=val/4.5 ;
val=(int)temp;
if(va==151)
{
tone(tonePin,NOTE_D5);
}
if(val==151)
{
tone(tonePin,NOTE_D6);
}
if(v==113)
{
tone(tonePin,NOTE_D1);
}
if(va==113)
{
tone(tonePin,NOTE_D2);
}
if(val==113)
{
tone(tonePin,NOTE_D3);
}
if(v==151)
{
tone(tonePin,NOTE_D4);
}
delay(100);
noTone(tonePin);
}
本帖最后由 幻生幻灭 于 2012-1-17 14:05 编辑
先占坑,再看贴
=================
我有个疑问,你的按键为啥是一个准确的模拟量
要是电线长点,温度变化点,焊点虚了点怎么办?
虽然没做过这个,但是建议引入个 精度范围的变量r,例如按建一:100-r<rang<100_r ;P支持下~~~ 幻生幻灭 发表于 2012-1-17 13:58 static/image/common/back.gif
先占坑,再看贴
=================
嗯嗯,赞成,不是范围的话,很容易挂掉。。楼主改改看看? 好,学习一下。 这是传说中的电子琴吗|??? 我很好奇 这个消抖的性能怎么样 听声音不太好判断啊... 话说有点儿数控电位器的味道啊…… LOVE~X 发表于 2012-1-18 16:11 static/image/common/back.gif
这是传说中的电子琴吗|???
这个不错。 电阻是多少欧姆的? 碇源堂 发表于 2013-2-17 19:46 static/image/common/back.gif
电阻是多少欧姆的?
自己根据需要计算下~ 说实话 电路有点不明白 可以做成一根线的吗 电路图画错了吧 不错,学习一下。
页:
[1]
2