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灯都没有反应。请问是为什么呢?又有什么办法改呢?真诚求助!谢谢! |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed