漆黑之翼 发表于 2018-7-15 16:57:06

【求助】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 = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
const int rowPins = {7, 6, 5, 4};
const int colPins = {11, 10, 9, 8};
void setup() {
pinMode(LED, OUTPUT); //我加的代码第二行
Serial.begin(9600);
for (int row = 0; row < numRows; row++) {
    pinMode(rowPins, INPUT);
    digitalWrite(rowPins, HIGH);
}
for (int column = 0; column < numCols; column++) {
    pinMode(colPins, OUTPUT);
    digitalWrite(colPins, 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, LOW);
    for (int row = 0; row < numRows; row++) {
      if (digitalRead(rowPins == LOW)) {
      delay(debounceTime);
      while (digitalRead(rowPins) == LOW);
      key = keymap;
      }
    }
    digitalWrite(colPins, HIGH);
}
return key;
}
可是结果是按下A键,或者任何一个键,LED灯都没有反应。请问是为什么呢?又有什么办法改呢?真诚求助!谢谢!


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

Led加一个220的电阻
页: [1]
查看完整版本: 【求助】4x4矩阵键盘无法实现预定功能