我在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的结果显示到我的液晶显示器上?
答案 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:33”
等
这样,只有在没有“ clock”字符串的情况下时间才会改变。如果需要打印没有共同点的字符串,只需在 lcd.print()行之间添加 delay(ms),以使字符串的更改可见。
我希望这在某种程度上有用。继续学习。