矩阵键盘 4*4 arduino

Posted

技术标签:

【中文标题】矩阵键盘 4*4 arduino【英文标题】:Matrix keyboard 4*4 arduino 【发布时间】:2016-09-15 12:43:38 【问题描述】:

我的键盘连接到 4*4 矩阵时出现问题。我只使用了 14 个按钮。问题是所有按钮都适用于 Arduino Mega。在 Uno 上仅适用于 3,4 - 5,6 - B,C。我不明白为什么它不起作用。有人可以帮助我吗?提前谢谢你。

这是我的代码

    #include <Keypad.h>

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

char keys[ROWS][COLS] = 
  '1' , '2' , '3' , '4',
  '5' , '6' , '7' , '8',
  '9' , 'A' , 'B' , 'C',
  'D' , 'E' , 'F' , 'G'
  ;


byte rowPins[ROWS] = 13,12,11,10;
byte colPins[COLS] = 0,1,2,3;

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() 
  // put your setup code here, to run once:
  Serial.begin(9600);


void loop() 
  // put your main code here, to run repeatedly:
  char key = keypad.getKey();
  if(key != NO_KEY)
    Serial.println(key);
  

【问题讨论】:

您确定您的连接正确吗?例如,UNO 上的引脚 0 和 1 默认配置为串行通信,如果我没记错的话,虽然有人会怀疑 Keypad 构造函数会处理这个问题。 太好了,0,1 针有问题。它们用于通信,但我不知道我不能将它用于按钮。谢谢你:) 【参考方案1】:

Arduino UNO 上的引脚 01 配置为串行通信,如果您使用 Serial 库。尝试将这些引脚更改为其他一些数字引脚。

纯属推测,在此状态下尝试使用digitalRead() 或类似的引脚读取yield a LOW,因此Keypad 库永远不会认为该列处于活动状态,因此驻留在这些列上的按钮将永远无法工作.

【讨论】:

以上是关于矩阵键盘 4*4 arduino的主要内容,如果未能解决你的问题,请参考以下文章

Proteus仿真Arduino UNO +74C922键盘解码驱动4X4矩阵键盘

Arduino智能闹钟设计(8x8矩阵键盘+LCD显示)

Arduino智能闹钟设计(8x8矩阵键盘+LCD显示)

Proteus仿真Arduino UNO+数码管显示4x4键盘矩阵按键

3.4 51单片机-矩阵键盘

「雕爷学编程」Arduino动手做(26)——4X4矩阵键盘模块