5696浏览
查看: 5696|回复: 3

[求助] 【求助】4x4矩阵键盘无法实现预定功能

[复制链接]
我是新手,求大神解答我的问题!
我把4x4矩阵键盘和Arduino板子连在一起,最终想要实现的是,通过按不同按键,可以实现不同功能。
打算先从最简单的试一试,就根据书上的(《Arduino入门到实践》)4x4矩阵键盘的代码,删了几行,再加了几行简单的控制LED灯亮的代码。希望达到的效果是按下A键,LED灯就亮。
代码如下:
//4x4矩阵键盘
int LED = 13; //我加的代码第一行
const int numRows = 4;
const int numCols = 4;
const int debounceTime = 20;
const char keymap[numRows][numCols] = {
  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};
const int rowPins[numRows] = {7, 6, 5, 4};
const int colPins[numCols] = {11, 10, 9, 8};
void setup() {
  pinMode(LED, OUTPUT); //我加的代码第二行
  Serial.begin(9600);
  for (int row = 0; row < numRows; row++) {
    pinMode(rowPins[row], INPUT);
    digitalWrite(rowPins[row], HIGH);
  }
  for (int column = 0; column < numCols; column++) {
    pinMode(colPins[column], OUTPUT);
    digitalWrite(colPins[column], HIGH);
  }
}
char getkey();
void loop() {
  char key = getkey();
  if (key == 'A') { //整条if语句是我加的代码第四行
    digitalWrite(LED, HIGH);
    delay(2000);
    digitalWrite(LED, LOW);
  }
}
char getkey() {
  char key = 0;
  for (int column = 0; column < numCols; column++) {
    digitalWrite(colPins[column], LOW);
    for (int row = 0; row < numRows; row++) {
      if (digitalRead(rowPins[row] == LOW)) {
        delay(debounceTime);
        while (digitalRead(rowPins[row]) == LOW);
        key = keymap[row][column];
      }
    }
    digitalWrite(colPins[column], HIGH);
  }
  return key;
}
可是结果是按下A键,或者任何一个键,LED灯都没有反应。请问是为什么呢?又有什么办法改呢?真诚求助!谢谢!
【求助】4x4矩阵键盘无法实现预定功能图1

截图201807151655009155.png
截图201807151656247533.png

zsz  见习技师

发表于 2018-8-4 20:37:03

Led加一个220的电阻
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail