使用我当前的代码一次读取一个字符,因此两个单独行的串行读取被读取为一个大输入。这导致两条线都写在我的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);
}
}
答案 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)以不滚动显示屏