如何在Serial Read上的Arduino LCD上存储两条独立的线路

时间:2012-12-06 12:45:16

标签: c embedded arduino

使用我当前的代码一次读取一个字符,因此两个单独行的串行读取被读取为一个大输入。这导致两条线都写在我的Arduino液晶显示器的同一行上。有没有办法让一个空字符或一个断行来让这些输入写在不同的行上?

编辑:对不起,我应该指定输入文本的长度可变。

这是我的Arduino代码:

     #include <LiquidCrystal.h>
     #include <string.h>

    // These are the pins our LCD uses.
    LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
    // initalize the lcd, and button input at zero.
    int lcd_key     = 0;
    int adc_key_in  = 0;

    void setup()
    {
     Serial.begin(9600); //Set the serial monitor.
     lcd.begin(16, 2); //Set the LCD
    }
    char line1;
    void loop()
   {

    if (Serial.available() > 0) { //If the serial monitor is open it will read a value.
    line1 = Serial.read();
    delay(10);
    Serial.print(line1);

  }
}

2 个答案:

答案 0 :(得分:1)

当LCD初始化时,我猜它的默认位置是0,0(即第一行和第一列)。然后,对于从串行输入读取的每个字符,将其打印到LCD,然后增加列。如果输入中有换行符,则将LCD位置重置为1,0(即第二行和第一列)。继续阅读和打印。


伪代码示例:

int current_line = 0;
int current_col = 0;

void loop(void)
{
    char ch = read_char_from_serial();

    if (ch == '\n')
    {
        current_line++;
        current_col = 0;
    }
    else
    {
        lcd_goto(current_line, current_col++);
        lcd_put_char(ch);
    }
}

答案 1 :(得分:0)

LCD具有第1行缓冲区和连续地址第2行缓冲区 取决于LCD型号(通常每行40或64个字符) 您可以为第一行右侧填充空格然后第二行发送固定数量的字符。 例: 第一行&lt; 30个空格&gt;第二行

您可能还需要设置LCD(lcd.begin)以不滚动显示屏