当我使用LCD . setcursor(0,3)与20x4 I2C LCD时,它打印到第2行,这是一个错误吗?



我目前正在使用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行(表示"燃料")覆盖了第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();
}

我也有同样的问题。液晶显示器。Print(0,1)和lcd.print(0,3)似乎指的是同一行。

假设在Line(0,1)上我有一个文本"Hello World"在Line(0,3)上输入Test输出为:"Testo World".

通过添加

lcd.begin(20, 4);

After lcd.init();

它解决了,

第一行和最后一行是0和3,而不是 1和4,因此第2行是显示的第三行。

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

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

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

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

最新更新