【求助】4x4矩阵键盘无法实现预定功能
2018-07-151.1万
AI 快速预览详细
本文解决了4x4矩阵键盘与Arduino连接后,按下A键LED灯不亮的问题。通过详细分析代码,发现getkey()函数中的digitalRead语句有误。正确的写法是digitalRead(rowPins[row]) == LOW。此外,还提供了完整的代码示例和故障排查步骤,帮助新手快速定位并修复问题。
|
我是新手,求大神解答我的问题! 我把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灯都没有反应。请问是为什么呢?又有什么办法改呢?真诚求助!谢谢! ![]() |
-
截图201807151655009155.png (304.71 KB, 下载次数: 1835)
-
截图201807151656247533.png (227.34 KB, 下载次数: 1868)






这里是MIND+的教程。