我目前正在使用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右下角的最后一个字符。