1

我目前正在使用 Sainsmart 的 20x4 LCD 设置显示 LCD。我正在使用 LiquidCrystal_I2C 库(http://www.dfrobot.com/image/data/TOY0046/LiquidCrystal_I2Cv1-1.rar),到目前为止一切正常。我正在尝试使用以下代码每秒打印 4 行(killSwitch 返回一个布尔值):

while (killSwitch()) {
  i++;
  lcd.clear();
  lcd.print(i);
  lcd.setCursor(0,1);
  lcd.print("RPM:");
  lcd.setCursor(0,2);
  lcd.print("Speed:");
  lcd.setCursor(0,3);
  lcd.print("Fuel:");
  delay(1000); 
}

出于某种原因,第 4 行(用于“Fuel”)覆盖了第 2 行(用于“RPM”)。有趣的是,当我尝试一次只打印一行时,我可以打印到最后一行,所以我认为设备本身没有任何问题。有什么想法吗?

编辑:

LiquidCrystal_I2C lcd(0x3F, 20, 4);
void setup() {
  lcd.init();
  lcd.backlight();
  lcd.print("ON");
  lcd.setCursor(0,2);
  lcd.print("LCD DISPLAY");
  delay(1000);
  lcd.clear();
  lcd.setCursor(0,2);
  lcd.print("READ OWNER MANUAL");
  lcd.setCursor(0,3);
  lcd.print("BEFORE OPERATION");
  delay(1000);
  lcd.clear();
}
4

3 回答 3

2

我有完全相同的问题。lcd.print (0,1) 和 lcd.print(0,3) 似乎指的是同一行。

在第 (0,1) 行说我有文本“Hello World”并且在第 (0,3) 行想要“Test”输出是:“Testo World”。

通过添加

lcd.begin(20, 4);

lcd.init();

它解决了它,

于 2017-02-22T11:12:37.553 回答
0

The first and last lines are 0 and 3, not 1 and 4, so your row 2 is the third line of the display.

于 2013-07-25T10:13:49.730 回答
0

不是错误。setCursor(x,y)接受 x 和 y 坐标,它们是从零开始的索引。

setCursor(0,0)移动到第一行的第一个字符。

setCursor(5,1)移动到第二行的第六个字符。

setCursor(19,3)移动到 20x4 LCD 右下角的最后一个字符。

于 2016-04-01T10:49:05.497 回答