我目前正在使用Sainsmart的20x4 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();
}
答案 0 :(得分:2)
我有完全相同的问题。 lcd.print(0,1)和lcd.print(0,3)似乎指的是同一行。
在线说(0,1)我有“你好世界”的文字 在线(0,3)想要“测试” 输出是:“Testo World”。
添加
lcd.begin(20, 4);
lcd.init();
之后
它解决了它,
答案 1 :(得分:0)
第一行和最后一行是0和3,不是 1和4,所以第2行是显示的第三行。
答案 2 :(得分:0)
不是错误。 setCursor(x,y)
接受x和y坐标,这是基于零的索引。
setCursor(0,0)
移动到第一行的第一个字符。
setCursor(5,1)
移动到第二行的第六个字符。
setCursor(19,3)
移动到20x4液晶显示屏右下角的最后一个字符。