|
本帖最后由 abuzcty 于 2017-4-29 00:08 编辑
最近在研究矩阵键盘,把官网上的一些东西搬运翻译了一下。
原网址:http://playground.arduino.cc/Main/KeypadTutorial
Keypad库下载地址:http://playground.arduino.cc/uploads/Code/keypad.zip
解压缩到arduino的library目录下,重启arduinoIDE即可。
一.关于Keypad库的一些特点:
1.Keypad库允许你的arduino读取矩阵键盘的输入值。该库支持3*4的,4*4以及其他的矩阵键盘。
2.该库是无阻塞型的,你可以一直按着按键,同时你的arduino在继续运行别的程序。(我的理解是这个库只检测你按下了按键,而不检测你是否松手)。
3.你在程序中写的delay()函数可能会使按键无效,因为如果你在delay()运行的时候按下按键,是不会被检测到的。如果你在程序里写了很多个delay(),即使每次只有10ms,也很可能会对键盘造成干扰。(所以尽量不要写delay())。
4.在你按下按键后,getKey()函数会返回对应的值,但如果你不松手,它不会重复输入该值。你也可以通过使用库的eventlistener功能追踪什么时候松开按键(这一段没太看懂,等以后研究研究再发上来)。
一般我们见到的都是上面两种矩阵键盘,具体电路图可以在购买时和商家索要,所以如何识别针脚和按键的连接就先不写了,以后再说。
二.示例程序
#include <Keypad.h>
const byte ROWS = 4; //矩阵键盘行数
const byte COLS = 4; //矩阵键盘列数
//按键定义
char hexaKeys[ROWS][COLS] = {
{'0','1','2','3'},
{'4','5','6','7'},
{'8','9','A','B'},
{'C','D','E','F'}
};
byte rowPins[ROWS] = {9,8,7,6}; //行的针脚连接的接口,第一行连9脚,第二行连8脚。。。
byte colPins[COLS] = {5,4,3,2}; //列的针脚连接的接口,第一列连5脚,第二列连4脚。。。
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
}
void loop(){
char customKey = customKeypad.getKey();
if (customKey){
Serial.println(customKey);
}
}
三.Keypad库函数详解
1.Keypad customKeypad = Keypad(char *userKeymap, byte *row, byte *col, byte numRows, byte numCols);
创建Keypad类,第一个参数是矩阵键盘的字符值的二维数组,即例子中的 hexaKeys[ROWS][COLS],第2,3个参数是行和列的接口数组,第4,5个参数是行数和列数。
后四个参数都要定义为byte类型。
。。。to be continued |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|