Arduino:如何从LCD屏幕上的串行打印数据(字符)?

时间:2013-11-20 13:31:45

标签: serial-port arduino

我在Arduino中有2个序列号

串行 =以串行方式打印数据字符串(dataRaspi)

Serial1 =从“Serial1”读取数据并在LCD屏幕上打印出来。

这是我的代码

#include <LiquidCrystal.h>

LiquidCrystal lcd(52, 50, 48, 46, 44, 42);

int byteRead;

void setup() 
{  
  Serial.begin(9600);
  Serial1.begin(9600); //INTIALISING THE SERIAL PORT
  lcd.begin(16, 2);
}

void loop()
{
**this is listing to print data string to Serial** 
dataRaspi = "$" + data_yaw + "|" + data_pitch + "|" + data_roll + "|" + data_lat + "|" + data_lon + "|" + data_airSpd + "|" + data_alt_qnh + "#";

Serial.println(dataRaspi);
delay(1);

**this is listing to read data from Serial1**
if(Serial1.available())
{
   while(Serial1.available < 0)
   byteRead = Serial1.read;
   lcd.print(byteRead);
}

问题是......

如果我向serial1提供一系列字符串输入,例如“qwerty”,我的lcd就变成了空白。如何将serial1的结果显示到我的液晶显示器上?

2 个答案:

答案 0 :(得分:2)

您的代码具有:“while(Serial1.available&lt; 0)”,即可用字节小于0 ...时,while语句将仅控制单个以下语句...您需要:

while (Serial1.available()) {
    lcd.print(Serial1.read());
}

答案 1 :(得分:0)

首先,您需要确保显示初始化正常。因此,注释掉串行读取块,然后尝试在显示器上打印硬编码的字符串。

Here如何使用 16x2液晶显示器的一个例子。

如果发现没有初始化问题,则可以继续改进串行读取代码。在arduino论坛中,Robin2有一个很好的topic on serial communication basics

当您需要在任何显示器上不断更新打印数据时,您需要一个与当前打印的字符串几乎相似的字符串,否则它将一直闪烁,并且您将看不到任何东西。

示例(伪代码):
打印“ clock:10:31”
打印“ clock:10:32”
打印“时钟:10:3​​3” 等

这样,只有在没有“ clock”字符串的情况下时间才会改变。如果需要打印没有共同点的字符串,只需在 lcd.print()行之间添加 delay(ms),以使字符串的更改可见。

我希望这在某种程度上有用。继续学习。