在本教程中,我们将学习如何在Arduino上设置键盘。小键盘可以用来控制事物的访问,比如开门或打开保险箱。小键盘可以添加到无数的Arduino项目中,用于学习或现实世界的项目。除了控制访问物品,这些小键盘还可以作为简单的输入设备来控制其他物品。我喜欢做东西的鲍勃甚至用他的Arduino键盘自动爆炸盖茨他的木工工场.用途几乎是无限的!

我们要做的第一件事是解释键盘是如何工作的。它们的简单性可能会让你惊讶!然后,我们将在Arduino上设置一个密码,当我们在键盘上输入数字时,这个密码将在串行控制台上打印出来。最后,我们将设置一个LED,当成功输入密码时将变为绿色。如果你想扩展这个,你可以用继电器替换LED,使这个项目打开一扇门。请在评论中告诉我们你是如何设置的!

本项目零件清单

如果你刚刚开始或只是想要一个简单的零件清单,我们已经提供了一个简单的购物清单给你。其中一些可能是从属链接。如果你使用它们,它不会花费你什么。我们可能会得到一小笔佣金,帮助我们继续制作这样棒的内容!

数量 部分/链接
1 x Arduino Uno
1 x USB B型线
1 x 无焊料的电路试验板
1 x 跳线设备
1 x 电位计工具包
1 x 领导的工具包
1 x 16×2液晶字符显示
1 x 键盘的Arduino
买一个极客酒吧!

相关:我们精选的Arduino入门套件

键盘的工作方式

Arduino键盘

在我们开始把我们的项目放在一起之前,让我们快速发现小键盘是如何工作的。正如我前面提到的,它们在设计和操作上非常简单。

在本文中,我们将使用4×4薄膜键盘.这些薄膜键盘有各种形状和大小。如果您已经有一个不同大小的键盘,那么为您的键盘修改下面的代码应该非常简单。薄膜键盘的工作原理和其他键盘一样,其优点是非常薄。然而,对于工业应用来说,它们可能不是最好的,因为它们可能不会像带有机械开关的键盘那样耐用。不管设计或构造如何,大多数键盘的操作原理都是一样的。

在膜键盘的每个键的下面是膜开关(因此得名)。在每一排薄膜中,都有一条水平轨迹将每一个薄膜开关连接在一起。在每一列中都有一个垂直轨迹,它也将每个开关连接在一起。有四行四列,这允许16个键读取只有8个引脚。当按下一个键时,就会使一行和一列上的轨迹产生电接触。

在右下方的图表中,我们用电气图来说明这个概念。在右边,我们已经把薄膜开关的背衬去掉了,这样你就可以看到轨迹的物理布局了。其他矩阵键盘,如3×4、4×6和8×8,都是以完全相同的方式设计的。他们只会有或多或少的大头针。

为了确定按下哪个按钮,Arduino检测矩阵中某一行和某一列的连接。让我们来看看实现这一目标的四种操作。

步骤1-在空闲时,当没有膜键盘的开关被按下时,所有的行保持低,所有的列保持高。

步骤2-当一个按钮被按下时,整个按钮的行被拉低,因为现在正在进行电接触。

步骤3-由于Arduino现在知道按钮所在的列,它需要知道按钮所在的行。这个过程只需要Arduino将所有的行从高电平切换到低电平,然后读取每一列。哪个返回值高表示按下了哪个按钮。

步骤4-最后,Arduino有了自己的答案,按下按钮的行和列都是高的。

如何- - -键盘上设置一个arduino - 0006 -膜-键盘-如何工作的呢

连接一个小键盘到Arduino

大多数薄膜键盘将使用相同的引脚。pinout是R1 R2 R3 R4 C1 C2 C3 C4其中R代表行C代表列。参考下图。如果你的键盘没有这个pinout,你可以使用万用表在连续模式下,当按下每个按钮时,测试每个引脚。

在“如何在Arduino上设置小键盘”教程中,使用以下图表将小键盘连接到您的Arduino:

键盘R1- > Arduino销9
键盘R2- > Arduino销8
键盘R3- > Arduino销7
键盘R4- > Arduino销6
键盘C1- > Arduino销5
键盘C2- > Arduino销4
键盘C3- > Arduino销3
键盘C4- > Arduino销2

How-to-Setup-a-Keypad-on-an-Arduino

Arduino键盘编码

现在我们已经准备好了硬件,是时候转向软件方面了。让我们把键盘的基本代码放在一起。

使用下面的代码片段使小键盘工作。上传到Arduino Uno,然后打开串口显示器。

[code language = "cpp"] // manbext登录页The Geek Pub Keypad to Serial Console //免费发布,属性#include <Keypad.h>const byte KEYPAD_ROWS = 4;const byte KEYPAD_COLS = 4;char hexaKeys [KEYPAD_ROWS] [KEYPAD_COLS] = {{' 1 ', ' 2 ', ' 3 ', ' '}, {' 4 ', ' 5 ', ' 6 ', ' B '}, {' 7 ', ' 8 ', ' 9 ', ' C '}, {'*', ' 0”、“#”、“D '}};byte rowPins[KEYPAD_ROWS] = {9,8,7,6};byte colPins[KEYPAD_COLS] = {5, 4, 3, 2};Keypad GPKeypad = Keypad(makeKeymap(hexkeys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);void setup() {Serial.begin(9600);} void loop() {char GPKey = GPKeypad.getKey();if (GPKey) {Serial.println(GPKey); } } [ / code]

如果您正确地完成了所有操作,当您按下键时,串行监视器应该显示输出。

通过密码控制LED

接下来,让我们添加一些功能。将下列导线、led和电阻添加到项目中,同时保留现有的键盘导线。

如何在Arduino接线图上设置键盘

现在让我们添加一些代码。这个代码会查找我们的密码,如果我们输入正确,它会打开一个绿色的LED,持续5秒。否则,红色的LED会一直亮着,表明我们的键盘是锁定的。

GPKey = GPKeypad.getKey ();如果(GPKey) {PW[myCounter] = GPKey;并同时PW [myCounter]);myCounter + +;} if (myCounter == Password_Length - 1) {if (!strcmp(PW, MasterPW)) {Serial.println("\nCorrect");digitalWrite (GreenLEDPin、高);digitalWrite (RedLEDPin、低);延迟(5000);digitalWrite (GreenLEDPin、低); digitalWrite(RedLEDPin, HIGH); } else { Serial.println("\nIncorrect"); delay(1000); } Serial.print("\nEnter Password:"); clearPW(); } } void clearPW() { while (myCounter != 0) { PW[myCounter--] = 0; } return; } [ / code]

打开串行控制台并输入您的密码“1234”。你的屏幕应该是这样的:

如果你输入了错误的密码,红色的LED会一直亮着,串行控制台会告诉你你的密码是错误的。如果你输入正确的密码,绿色LED会亮5秒,串行控制台会让你知道密码是正确的。

扩展键盘代码

现在你已经学习了如何在Arduino上设置键盘,你应该把这个项目带到下一个层次。你可以添加继电器来控制自动门锁或打开/关闭一个设备。你甚至可以增加字符液晶显示而不是使用串行控制台!

我附近的逃生室有一个Arduino“炸弹扩散”道具在他们的一个房间里,它完全爆炸了。Arduino键盘项目带给你的乐趣是无穷无尽的!

下一个步骤

现在你可以继续下一个教程或回到Arduino教程列表!