LCD上显示的是特殊字符而不是数字-Arduino
我想将4x3矩阵键盘上按下的数字打印到我的20x4 lcd上,但结果我得到了一个w和箭头。 这是我的密码LCD上显示的是特殊字符而不是数字-Arduino,arduino,Arduino,我想将4x3矩阵键盘上按下的数字打印到我的20x4 lcd上,但结果我得到了一个w和箭头。 这是我的密码 #include <LiquidCrystal.h> #include <Keypad.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7 const byte Rows= 4; //number of rows on the keypad i.e. 4 const byte Cols= 3;
#include <LiquidCrystal.h>
#include <Keypad.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7
const byte Rows= 4; //number of rows on the keypad i.e. 4
const byte Cols= 3; //number of columns on the keypad i,e, 3
//we will definne the key map as on the key pad:
char keymap[Rows][Cols]={
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte rPins[Rows]= {9, 8, 7, 6}; //Rows 0 to 3
byte cPins[Cols]= {5, 4, 3}; //Columns 0 to 2
Keypad kpd= Keypad(makeKeymap(keymap), rPins, cPins, Rows, Cols);
void setup() {
lcd.begin(20, 4);//initializing LCD
}
void loop() {
char keypressed = kpd.getKey();
if (keypressed != NO_KEY) {
lcd.print(keypressed);
}
}
#包括
#包括
液晶显示器(12,11,5,4,3,2)//RS、EN、D4、D5、D6、D7
常量字节行=4//键盘上的行数,即4
常量字节Cols=3//键盘上的列数,即3
//我们将在键盘上定义关键地图:
char键映射[行][列]={
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
字节rPins[行]={9,8,7,6}//第0至3行
字节cPins[Cols]={5,4,3}//第0列到第2列
键盘kpd=键盘(makeKeymap(键盘映射)、RPIN、CPIN、行、列);
无效设置(){
lcd.begin(20,4);//初始化lcd
}
void循环(){
char keypressed=kpd.getKey();
如果(按下键!=无键){
lcd.打印(按键);
}
}
请帮助我。您的两个模块共享一些相同的引脚,这是问题的根源:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7
byte cPins[Cols]= {5, 4, 3}; //Columns 0 to 2
从这些声明中,引脚5、4和3似乎是共享的。当外围设备之间共享管脚时,会发生各种奇怪的事情。然后,当你说每台设备似乎都能独立工作,而没有其他设备时。。。嗯,我得说重叠的针是你的罪魁祸首
查看是否有方法重新映射一个或其他设备,以避免共享PIN。如果
lcd.print(“Hello World”);您需要调试它并找出问题所在代码>起作用,您知道问题不在LCD中。如果Serial.println(按键)代码>为您提供正确的结果,您知道问题不在键盘上。我猜你的设置中是否有错误的pin码。我尝试过使用相同的连接分别调试lcd和键盘,结果是正确的。但当我一起尝试时,它总是显示“w”和箭头符号。我打赌你没有尝试我建议的同时配置两个!您正在尝试将引脚3、4和5用于键盘和LCD。。