我有一个小问题。我试图在连接到arduino uno的4x4键盘的16x2 LCD屏幕上显示字符。当我按下键盘按钮时,相应的字符在串行监视器上成功打印,但不是dsplay。 我还应该提到,在查找字符的ASCII表之后,LCD上打印的错误字符对应于重复的ASCII字符,即按1键打印1111 1111,而另一个键可能打印对应于ASCII 1011的字符1011.基本上是从右下角到左上角的ascii表中的字符。另外,当我按下某个键时,它会在串行监视器上打印一次,但在LCD上多次打印。 我会在下面发布我的代码,并链接到我正在使用的键盘和LCD屏蔽。当我在显示屏上打印字符/文字时,最后一个注意事项与键盘无关,因此它们打印的很好。16X2 LCD屏蔽与4x4矩阵键盘
代码:
#include <Keypad.h>
#include <LiquidCrystal.h> // initialize the library with the numbers of the
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'}, //define the cymbols on the buttons of the keypads
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {13, 12, 11, 10}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {9, 8, 7, 6}; //connect to the column pinouts of the keypad
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); //initialize an instance of class NewKeypad
void setup()
{
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop()
{
char customKey = customKeypad.getKey();
if (customKey)
{
//lcd.setCursor(1,1);
lcd.print(customKey);
delay(500);
Serial.print(customKey);
}
}
LCD屏蔽: http://www.maplin.co.uk/p/16x2-lcd-shield-for-arduino-n07dh
键盘: https://www.coolcomponents.co.uk/sealed-membrane-4-4-button-pad-with-sticker.html
感谢,希望有人可以提供帮助。
我不确定你的问题在这里。你想问我们什么? – duskwuff
你是什么意思?我问是否有人知道为什么在LCD上打印错误的字符,但在串行监视器上显示正确的字符... – Davidgasp