当我使用带有20x4 I2C LCD的lcd.setCursor(0,3)打印到第2行时,这是一个错误吗?

时间:2013-04-13 05:46:11

标签: arduino lcd

我目前正在使用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();
}

3 个答案:

答案 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液晶显示屏右下角的最后一个字符。