极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 51579|回复: 1

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

[复制链接]
发表于 2017-4-28 23:33:17 | 显示全部楼层 |阅读模式
本帖最后由 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
回复

使用道具 举报

发表于 2017-12-10 08:41:48 | 显示全部楼层
感谢分享,正在学习!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 21:51 , Processed in 0.039132 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表