1

私の現在のコードでは、一度に1文字が読み取られるため、2つの別々の行のシリアル読み取りが1つの大きな入力として読み取られます。これにより、ArduinoのLCDディスプレイの同じ行に両方の行が書き込まれます。これらの入力を別の行に書き込むためにヌル文字またはブレークラインを設定する方法はありますか?

編集:申し訳ありませんが、入力テキストが可変長になるように指定する必要がありました。

これが私の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);

  }
}
4

2 に答える 2

1

LCDが初期化されるとき、デフォルトの位置は0,0(つまり、最初の行と最初の列)になると思います。次に、シリアル入力から読み取った文字ごとに、それをLCDに印刷し、列を増やします。入力に改行が含まれている場合は、LCDの位置を1,0にリセットします(つまり、2行目と1列目)。読み続けて印刷します。


擬似コードの例:

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);
    }
}
于 2012-12-06T12:55:24.657 に答える
0

LCDには、LCDモデルに応じて、1行目と2行目が連続するアドレスにバッファがあります(通常、1行あたり40文字または64文字)。1行目にスペースを右に埋めてから2行目に固定数の文字を送信できます。 。例:1行目<30スペース>2行目

ディスプレイをスクロールしないようにLCD(lcd.begin)を設定する必要がある場合もあります)

于 2012-12-06T12:58:59.650 に答える