玩属性,你想一起来学着写键盘主控么?一起玩玩arduino吧
机械键盘吧
全部回复
仅看楼主
level 12
emdyu 楼主
早就听说arduino是开源硬件,早就学着玩,可惜大学的计算知识早已还给体育老师,毕业后又没找到音乐老师教我,还是自己瞎玩玩吧!
首先当然是说下arduino的Leonardo版本了,我手上买的是Pro micro版,支持18个io端口,可以做poker位或者75位的键都够用,价格30左右
为什么买Leonardo呢,因为这个版本直接可以用
void setup() {
Keyboard.begin();
}
这样在setup中写入这个就可以模拟键盘了,我写入这个之后,这个板子插到电脑上,就被电脑认为键盘了
然后,用以下语录实现按下某键,和抬起某键,或者抬起它
当然,数字对应的是ascII码,可以Baidu出对照表
setup部分在板子接电后只运行一次。loop部分也被无限重复执行
void loop() {
Keyboard.press(56);
Keyboard.release(56);
delay(5000);
}
那么以上这些都写在哪里呢?
可以下载arduino用的编程软件,百度arduino IDE即可
可以到IDE中给的官网找相关语法的用法和解释,不过都是英文,我只会瞎看看
当然这样还不行,我们得弄个按键矩阵出来,我直接找了矩阵键盘样例改了一个,别说我为啥不自己写,实在抄起来快
const byte hang =5;//设置行的数量
const byte lie= 13;//设置列的数量。
char hangliejuzhen[hang][lie] = {
{'esc','1','2','3','4','5','6','7','8','9','0','-','='},//设置第1行对应的按键
{'tab','q','w','e','r','t','y','u','i','o','p','[',']'},//设置第2行对应的按键
{'7','8','9','C','A','A','A','A','A','A','A','A','A'},//设置第3对应的按键
{'7','8','9','C','A','A','A','A','A','A','A','A','A'},//设置第4对应的按键
{'*','0','#','D','A','A','A','A','A','A','A','A','A'}//设置第5行对应的按键
};
byte hangduankou[hang] = {10,14,16,15,9};
byte lieduankou[lie] = {0,1,2,3,4,5,6,7,8,A1,A2,A3,A0};
void setup(){
for(byte hangi =1;hangi<6;hangi++){
pinMode (hangduankou[hangi],OUTPUT);//为没行行端口定义为输出口,用于矩阵扫描时输出
delay(1);
}
for(byte liei=1;liei<16;liei++){
pinMode (lieduankou[liei], INPUT_PULLUP);//为列端口定义为上拉输入口,用于矩阵扫描时读取状态
delay(1);
}
}
好吧,我抄的同时还是改了一下的
定义好这些,就可以去loop中写键盘扫描部分了,
也就是Baidu出来的矩阵键盘扫描原理
11点多了,明天继续吧
2014年03月10日 15点03分 1
level 13
[滑稽] 不懂帮顶
2014年03月10日 15点03分 2
学之前都不懂,我现在也是一知半解,但是貌似不是很难懂,所以一起玩玩啦
2014年03月10日 15点03分
回复 emdyu :[哭着跑]我还是看看就好了。。毕竟读书少。
2014年03月10日 15点03分
回复 emdyu :好高端的样子,求私信个地址,还有,空格怎么表示??
2014年03月11日 13点03分
回复 拜金小处男 :什么地址?板子么?就直接taobao就行,很多的。关键字:arduino leonardo micro。空格我今天测试号了,就直接在‘’中间打个空格就行。但是回车怎么表示我还没有找到。
2014年03月11日 13点03分
level 13
多谢小巴[哈哈]好东西
2014年03月10日 15点03分 3
可能我没有表达清楚,我不是说已经全学会了然后来发,而是本来我自己也在学,就是这几天抽时间学着写和测试。是和吧友一起学着玩的
2014年03月11日 11点03分
回复 emdyu :嗯嗯,加油加油,最近也在学嵌入式,有时间就看看哈
2014年03月11日 12点03分
难道不是大吧[疑问][疑问]
2015年04月08日 15点04分
level 12
太高端,看不懂。[不高兴]
-------Awm清风决:杯中饮恨,无禁无尽。
2014年03月10日 15点03分 4
我0基础学着玩,其他玩arduino的都说这个板子0基础就能玩
2014年03月10日 15点03分
回复 emdyu : [乖]好歹大学学计算机的咩,而我是完全看不懂得节奏[勉强]
2014年03月10日 15点03分
回复 Awm清风决 :大学不是计算机,就学过c,
2014年03月10日 15点03分
回复 emdyu : C语言咩〜
2014年03月11日 01点03分
level 12
这是要加精的节奏啊,占楼占楼
2014年03月10日 15点03分 5
level 12
345行为什么这样对应?
2014年03月10日 15点03分 7
懒得写了,测试用的
2014年03月10日 15点03分
回复 emdyu :哦哦哦。。
2014年03月11日 08点03分
level 11
帮顶,想学
   --这是一条多么可爱的小尾巴,想想还有点小激动
2014年03月10日 15点03分 8
level 12
当初学自动控制的时候有做过这个,但不知道竟然还可以做键盘……
2014年03月10日 15点03分 9
我也是最近发现的,这个版本不需要搞usb协议什么的,好简单
2014年03月10日 15点03分
回复 emdyu :啥时候我回家看看我的a是什么版本的
2014年03月10日 15点03分
回复 Crazy_Qrz :不直接支持usb键盘的版本,好像需要附加个usb库什么的,我一开始抄的就是那种,后来发现有直接usb模拟键盘的版本,就放弃一开始的了。
2014年03月11日 02点03分
回复 emdyu :你说的我都没看懂……当初我也只是做控制几个led灯闪烁加上蜂鸣喇叭这种小儿科的而已……
2014年03月11日 02点03分
level 13
看不懂
点赞,大约就是酷酷地撇下一句我喜欢你并且无需你回应的骄傲情怀。——点赞狂魔【徐克克】
2014年03月10日 15点03分 10
level 12
emdyu 楼主
接1楼:
完成按键矩阵的定义,那么就可以在loop中通过矩阵扫描来测试一下了。
void loop(){
for(byte hango=1;hango<6;hango++){
digitalWrite (hangduankou[hango],LOW);//为每行设定低电平
for (byte lieo=1;lieo<16;lieo++){
while ( digitalRead(lieduankou[lieo])==LOW){ //判断列是否低电平
Keyboard.press(hangliejuzhen[hango][lieo]);//是 则输入该行列对应的字符
delay(100);
Keyboard.release(hangliejuzhen[hango][lieo]);//100ms后释放该字符
delay(1);
}
}
}
}
做到这里,一个最简单的键盘扫描就可以用来测试了。
当然,这还远远不行
比如:消抖!
我抄了些常见的键盘消抖,原理基本上都是使用延时来消抖,怎么延时呢?
2014年03月11日 00点03分 11
防抖动 这个我知道
2015年04月08日 15点04分
level 11
好刁,我这种渣渣还是玩玩低技术含量的就够了
2014年03月11日 01点03分 12
level 12
之前搞项目用过arduino
2014年03月11日 01点03分 13
level 11
读书少…看了就跑…
﹏₯㎕﹍﹍世事如书,我偏爱你这一句
2014年03月11日 01点03分 14
level 13
lz
键盘矩阵不用管单个键的权重么?
2014年03月11日 01点03分 15
权重?新手表示,不太懂什么是权重。可能我抄的一些程序注释里没有提权重,所以不了解。
2014年03月11日 01点03分
回复 emdyu :额额额……我的错……我是想说键帽倍数不必表示出来嘛?[委屈]
2014年03月11日 01点03分
回复 沧海澜星 :看到那个表示键盘按键的数组里也没有提到这个……我想这么做出来的键盘行列貌似都是对齐的,不太对劲诶
2014年03月11日 02点03分
回复 沧海澜星 :不是,这个矩阵定义的是接线用的,线可以弯曲什么的,不是一定对齐的。
2014年03月11日 02点03分
level 12
看起来不错啊
2014年03月11日 01点03分 16
level 9
这个我在现场做多媒体展示用过
2014年03月11日 02点03分 17
恩,很多人用arduino玩互动电子,很好玩的样子,我也正想用蓝牙模块加上手机app,做个家庭用的照明控制玩,不过先得通过学写键盘主控,来学会使用它。
2014年03月11日 02点03分
回复 emdyu : 应该说确实很方便,不过有时候嫌捣鼓麻烦了深圳很多也有现成的,毕竟现场不能像家里一样折腾
2014年03月11日 02点03分
回复 emdyu : 1277738,以前在这个群里玩的比较多,现在应该更多新玩友啦wwww
2014年03月11日 02点03分
level 11
自己玩玩还行,没见过谁真用avr做usb键盘的
2014年03月11日 02点03分 18
恩,diy玩玩行,批量的话,貌似成本高了些。
2014年03月11日 08点03分
我想问一下avr是什么
2015年03月20日 13点03分
level 14
裤总?
2014年03月11日 12点03分 20
恩,玩arduino不?
2014年03月11日 12点03分
回复 emdyu :没时间玩啊〒_〒
2014年03月11日 12点03分
回复 popota12 :我也是工作忙,学得很慢
2014年03月11日 12点03分
我玩,你们现在还玩吗
2015年03月20日 13点03分
level 15
[乖]玩不起
2014年03月11日 13点03分 21
我也没买整套的,就买了个不到30¥的micro板子学习。
2014年03月11日 13点03分
level 9
2014年04月09日 08点04分 22
1 2 3 尾页