液晶屏显示随机字符

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