用Arduino Uno添加4*4薄膜键盘

这里先给新来的小伙伴参考一下arduino开发板的主要技术参数

微控制器ATmega328P
工作电压5伏特
输入电压,还行7-12伏特
输入电压,最牛逼6-20伏特
数字输入输出引脚14个(其中有6个引脚可作为PWM引脚)
PWM引脚6个
模拟输入引脚6个
输入/输出引脚直流电流20 毫安
3.3V引脚电流50 毫安
Flash Memory(闪存)32 KB (ATmega328P) 其中由 0.5 KB用于系统引导(bootloader)
SRAM(静态存储器)2 KB (ATmega328P)
EEPROM1 KB (ATmega328P)
内置LED引脚13
68.6 mm
53.4 mm
25克
时钟频率16 MHz

 回归正题:

硬件概述

薄膜键盘由薄而柔韧的薄膜材料制成。它们的尺寸可能有4×3、4×4、4×1等。不管它们的尺寸如何,它们都以相同的方式工作。        

微控制器可以扫描这些线路以查找按钮按下状态-为此-它遵循以下程序

1.  微控制器将所有列和行线设置为输入。

2.  然后,它选择一行设置为输出,并将其设置为高电平。

3.  之后,它依次检查每一列线。

4.  如果列连接保持低电平,则未按下该列线上的按钮。

5.  如果它变为高电平,则微控制器知道哪一行设置为高电平,以及在检查时检测到哪一列为高电平。

6.  最后,它知道按下了对应于检测到的行和列的按钮。

开始吧!

现在我们了解了有关薄膜键盘的所有信息,可以开始将它与Arduino连接起来。连接非常简单。首先将键盘的引脚1连接到Arduino上的数字引脚9。现在继续向左连接引脚,如2与8、3与7等。

学习代码

该草图首先包含Keypad.h库并定义行数和列数。

接下来,我们定义一个二维键盘数组keys[ROWS][COLS],它保存在键盘上按下特定按钮时要打印的字符。

在我们的草图中,字符的布局与它们出现在键盘上的一样。但实际上你可以将这些定义为你想要的任何东西。例如,如果您打算创建一个计算器项目,您只需将数组定义更改为:

char keys[ROWS][COLS] = {
  {'1','2','3','4'},
  {'5','6','7','8'},
  {'9','0','+','-'},
  {'.','*','/','='}
};

接下来,我们创建一个keypad对象。构造函数Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS ) 接受五个参数。

●    makeKeymap(keys) 将内部键盘映射初始化为等于用户定义的键盘映射。

●    rowPins 和 colPins 是与键盘的行和列连接的arduino引脚号。

●    ROWS 和 COLS 是键盘的行数和列数。

一旦创建了keypad对象,我们可以发出一个简单的命令 getKey() 来检查按下了哪个按键。

键盘库中的其他有用函数

您可以将一些有用的函数与Keypad对象一起使用。下面列出了其中的几个:

●    char waitForKey() 永远等待,直到有人按下一个键。它会阻止所有其他代码,直到按下某个键。这意味着没有闪烁的LED,没有LCD屏幕更新,除了中断程序之外什么都没有。

●    KeyState getState() 返回任何键的当前状态。四种状态是IDLE、PRESSED、RELEASED和HOLD。

●    boolean keyStateChanged() 让您知道按键何时从一种状态更改为另一种状态。例如,您可以测试何时按下某个键,而不仅仅是测试一个有效的键。

●    setHoldTime(unsigned int time) 设置用户必须按住按钮直到触发HOLD状态的毫秒数。

●    setDebounceTime(unsigned int time) 设置键盘在接受新的按键/按键事件之前将等待的毫秒数。

●    addEventListener(keypadEvent) 如果使用键盘,则触发事件。 

代码放到最后(得确保你学会了) 

#include <Keypad.h>

const byte ROWS = 4; 
const byte COLS = 4;

char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};


Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

void setup(){
  Serial.begin(9600);
}
  
void loop(){
  char key = keypad.getKey();
  if (key){
    Serial.print("Key Pressed : ");
    Serial.println(key);
  }
}

这是串口监视器中输出的样子(随便按按):

如果你也是这样的话说明:

完结! 

你已经可以去创造更多关于薄膜键盘的东西了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值