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软件,才能识别库文件夹中的任何新文件。

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

引用\[1\]:在Arduino,您可以使用键盘来读取矩阵类型的键盘。您可以按照File->Examples->Keypad->Examples->DynamicKeypad的主菜单进行操作。打开草图后,您将看到setup()函数的一些代码,其包括初始化串口、打开LED以及设置事件监听器和延迟时间等。\[1\] 引用\[2\]:键盘允许您使用Arduino读取矩阵类型的键盘。这些键盘可以从旧电话清除,也可以从电子零件商店以低廉的价格购买。它们具有不同的配置和标记,例如3x4、4x4等,并且可以支持各种键盘布局。您可以从https://playground.arduino.cc/Main/KeypadTutorial/下载最新版本的键盘,其包括四个示例草图。\[2\] 引用\[3\]:键盘支持用户定义的引脚和键映射,因此您无需更改文件。如果您确实需要更改文件,您需要将文件保存到正确的文件夹(\ $ ArduinoHome $ \ libraries \)。在保存后,您可能需要退出并重新启动Arduino IDE软件,以便识别文件夹的任何新文件。您可以在以下链接找到更多关于使用和创建的信息:http://www.arduino.cc/en/Main/Libraries、http://www.arduino.cc/en/Hacking/Libraries、http://www.arduino.cc/en/Reference/Libraries、https://playground.arduino.cc/Code/。\[3\] 综上所述,Arduino的键盘可以帮助您读取矩阵类型的键盘,并且支持各种键盘布局和配置。您可以按照示例草图和文档的说明来使用和定制键盘。 #### 引用[.reference_title] - *1* [arduinoKeypad 函数介绍](https://blog.csdn.net/acktomas/article/details/117119504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [arduinokeyboard使用](https://blog.csdn.net/acktomas/article/details/117118991)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值