液晶屏显示随机字符
LCD screen display random characters
所以我最终尝试使用 4x4 数字键盘、arduino 和螺线管构建一个有趣的安全系统。在尝试让数字键盘和 LCD 一起工作时,由于我不知道的原因,我一直 运行 遇到问题。下面的代码是我目前所拥有的:
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <Keypad.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
//_________________________________________
const byte rows = 4; //number of the keypad's rows and columns
const byte cols = 4;
char keyMap [rows] [cols] = { //define the cymbols on the buttons of the keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {1, 2, 3, 4}; //pins of the keypad
byte colPins [cols] = {5, 6, 7, 8};
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
//_________________________________________
void setup() {
Serial.begin(9600);
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
char key = myKeypad.getKey();
if (key){
Serial.print(key);
lcd.print("key has been pressed!");
delay(2000);
lcd.clear();
}
}
尽管如此,我却不断收到随机和损坏的字符,但我不明白为什么。有人可以帮助我吗?
enter image description here
您的 LCD 显示器没有显示预期的字符串,因为您重叠了用于其他任务的引脚。
大多数 Arduino 板上的引脚 1 用作串行发送器 (Tx) 引脚。同样的引脚也发生在你的 LCD 显示器引脚之一(rs 引脚)上。这会导致 LCD 上出现意外行为和乱码。
//Pin 1 for LCD
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
...
//Pin 1 is used for Serial Communication Tx to send the data via the port.
Serial.print(key);
...
要使用 Arduino 板正确配置 LCD 显示器,请阅读 Arduino 官方网站上的文档:HelloWorld on LCD
所以我最终尝试使用 4x4 数字键盘、arduino 和螺线管构建一个有趣的安全系统。在尝试让数字键盘和 LCD 一起工作时,由于我不知道的原因,我一直 运行 遇到问题。下面的代码是我目前所拥有的:
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
#include <Keypad.h>
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
//_________________________________________
const byte rows = 4; //number of the keypad's rows and columns
const byte cols = 4;
char keyMap [rows] [cols] = { //define the cymbols on the buttons of the keypad
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins [rows] = {1, 2, 3, 4}; //pins of the keypad
byte colPins [cols] = {5, 6, 7, 8};
Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);
//_________________________________________
void setup() {
Serial.begin(9600);
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
char key = myKeypad.getKey();
if (key){
Serial.print(key);
lcd.print("key has been pressed!");
delay(2000);
lcd.clear();
}
}
尽管如此,我却不断收到随机和损坏的字符,但我不明白为什么。有人可以帮助我吗?
enter image description here
您的 LCD 显示器没有显示预期的字符串,因为您重叠了用于其他任务的引脚。
大多数 Arduino 板上的引脚 1 用作串行发送器 (Tx) 引脚。同样的引脚也发生在你的 LCD 显示器引脚之一(rs 引脚)上。这会导致 LCD 上出现意外行为和乱码。
//Pin 1 for LCD LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) ... //Pin 1 is used for Serial Communication Tx to send the data via the port. Serial.print(key); ...
要使用 Arduino 板正确配置 LCD 显示器,请阅读 Arduino 官方网站上的文档:HelloWorld on LCD