arduino中keyboard库的使用

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(红)连接到引脚1和表笔2(黑)连接到引脚2。
  2. 按下所有按钮,直到万用表指示导通。
  3. 标注您找到的行和列引脚号。示例:您的万用表连接到引脚1和5。当您按下数字7时,您的仪表做出了反应。在COL0标记1和ROW2标记5。
  4. 如果仪表没有反应,则将表笔2(黑)从引脚2移至引脚3,然后重复上述步骤2和3。
  5. 现在,继续将引线移动到下一个引脚,并对每个引脚重复步骤2和3。
  6. 表笔2连接过所有的引脚后,将表笔1从引脚1移到引脚2,同时将表笔2连接到引脚3,并重复步骤2和3。
  7. 一旦完全确定了图中的所有引脚,就可以安全地忽略任何未使用的键盘引脚。现在您可以将键盘连接到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软件,才能识别库文件夹中的任何新文件。

有关使用和创建库的更多信息

版权声明:本文为CSDN博主「acktomas」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/acktomas/article/details/117118991

生成海报
点赞 0

acktomas

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

【翻译】arduino 内置示例

内置示例{#top} https://www.arduino.cc/en/Tutorial/BuiltInExamples 内置示例是Arduino软件(IDE)中包含的草图,单击工具栏菜单打开它们&