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
首先当然是说下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点多了,明天继续吧