abuzcty 发表于 2017-4-28 23:33:17

矩阵键盘arduino官网Keypad库使用详解

本帖最后由 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 = {
{'0','1','2','3'},
{'4','5','6','7'},
{'8','9','A','B'},
{'C','D','E','F'}
};
byte rowPins = {9,8,7,6}; //行的针脚连接的接口,第一行连9脚,第二行连8脚。。。
byte colPins = {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,第2,3个参数是行和列的接口数组,第4,5个参数是行数和列数。
后四个参数都要定义为byte类型。

。。。to be continued

duanyz 发表于 2017-12-10 08:41:48

感谢分享,正在学习!
页: [1]
查看完整版本: 矩阵键盘arduino官网Keypad库使用详解