Keypad 库函数介绍
请参考:https://blog.csdn.net/acktomas/article/details/117119504
arduino中keyboard库的使用
原文地址:https://playground.arduino.cc/Main/KeypadTutorial/
键盘库允许您的Arduino读取矩阵类型的键盘。您可以从旧电话中清除这些键盘,也可以从几乎任何电子零件商店以不到5美元的价格获得它们。它们具有3x4、4x4和其他各种配置,并在按键上写有单词,字母和数字。该库能够支持所有这些库。
下载最新版本 (其中包括四个示例草图。)
识别键盘
首先,您需要弄一张纸,并绘制如下图所示右图。我绘制的图上针脚编号(底部分别为1,2,3,右侧为7,6,5,4)。接下来,您将使用欧姆表来找出哪些引脚连接到哪些键。首先要做的是计算键盘上的针脚数量(如下图所示)。照片显示的是14个针脚,尽管没有使用所有针脚。不用担心,完成此过程后,您将知道哪些引脚未使用并且可以忽略。
程序
- 将欧姆计切换到测试导通档, 表笔1(红)连接到引脚1和表笔2(黑)连接到引脚2。
- 按下所有按钮,直到万用表指示导通。
- 标注您找到的行和列引脚号。示例:您的万用表连接到引脚1和5。当您按下数字7时,您的仪表做出了反应。在COL0标记1和ROW2标记5。
- 如果仪表没有反应,则将表笔2(黑)从引脚2移至引脚3,然后重复上述步骤2和3。
- 现在,继续将引线移动到下一个引脚,并对每个引脚重复步骤2和3。
- 表笔2连接过所有的引脚后,将表笔1从引脚1移到引脚2,同时将表笔2连接到引脚3,并重复步骤2和3。
- 一旦完全确定了图中的所有引脚,就可以安全地忽略任何未使用的键盘引脚。现在您可以将键盘连接到Arduino了。
使用库的注意事项
- 该库是非阻塞的,这意味着您可以整天按住该键,您的Arduino将继续处理其余代码。
- 但是,请考虑一下,在编写代码时,您使用的每个delay()都会占用键盘时间。诸如delay(250)之类的短内容会使键盘似乎反应迟钝。如果您在代码中全部撒上一堆delay(10),同样的事情将会发生。
- 按下键后,函数getKey()将返回一个键值,但不会自动重复。另外,如果您使用库的eventListener功能,则在释放密钥时,您可以跟踪密钥RELEASED事件。
例子
<查找有关如何使用新库的更多示例。>
/* Keypadtest.pde
*
* Demonstrate the simplest use of the keypad library.
*
* The first step is to connect your keypad to the
* Arduino using the pin numbers listed below in
* rowPins[] and colPins[]. If you want to use different
* pins then you can change the numbers below to
* match your setup.
*
*/
#include <Keypad.h>
const byte ROWS = 4; // Four rows
const byte COLS = 3; // Three columns
// Define the Keymap
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'#','0','*'}
};
// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte rowPins[ROWS] = { 9, 8, 7, 6 };
// Connect keypad COL0, COL1 and COL2 to these Arduino pins.
byte colPins[COLS] = { 12, 11, 10 };
// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
#define ledpin 13
void setup()
{
pinMode(ledpin,OUTPUT);
digitalWrite(ledpin, HIGH);
Serial.begin(9600);
}
void loop()
{
char key = kpd.getKey();
if(key) // Check for a valid key.
{
switch (key)
{
case '*':
digitalWrite(ledpin, LOW);
break;
case '#':
digitalWrite(ledpin, HIGH);
break;
default:
Serial.println(key);
}
}
}
故障排除
1. 您几乎可以将键盘连接到所需的任何引脚。如果要使用串行引脚(0和1)进行通信,请注意不要使用它们。
2. 如果按键似乎需要很长时间才能显示出来,则您可能在代码中使用了很长的delay()。如果您使用太多的诸如delay(10)的小delay(),可能会发生同样的事情。
3. 确保您了解引脚映射,并已将键盘连接起来以匹配。如果您不正确地连接了引脚(并已将它们焊接),则可以通过重新定义引脚和/或键映射以使键盘正常工作来对其进行修复。
修改库
该库支持用户定义的引脚和键映射,因此无需更改该库。如果这样做,则需要确保将文件保存回到\ $ ArduinoHome $ \ libraries \下的正确文件夹。您可能还必须退出并重新启动Arduino IDE软件,才能识别库文件夹中的任何新文件。