Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serial port Arduino:如何在LCD屏幕上打印串行数据(字符)?_Serial Port_Arduino - Fatal编程技术网

Serial port Arduino:如何在LCD屏幕上打印串行数据(字符)?

Serial port Arduino:如何在LCD屏幕上打印串行数据(字符)?,serial-port,arduino,Serial Port,Arduino,我在Arduino有两部连续剧 串行=以串行方式打印数据字符串(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); //INTIALI

我在Arduino有两部连续剧

串行=以串行方式打印数据字符串(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);
}
#包括
液晶显示器(52、50、48、46、44、42);
内特比德;
无效设置()
{  
Serial.begin(9600);
Serial1.begin(9600);//初始化串行端口
lcd.begin(16,2);
}
void循环()
{
**此列表用于将数据字符串打印到串行**
dataRaspi=“$”+数据偏航+“|”+数据俯仰+“|”+数据横滚+“|”+数据横摇+“|”+数据纵摇+“|”+数据横摇+“|”+数据纵摇+“|”;
Serial.println(dataRaspi);
延迟(1);
**这是从Serial1读取数据的清单**
if(Serial1.available())
{
而(Serial1.0可用<0)
byteRead=Serial1.read;
lcd.打印(byteRead);
}
问题是……

如果我将一系列字符串输入到serial1,如“qwerty”,我的lcd将变为空白。如何将serial1的结果显示到我的lcd显示屏?

您的代码有:“while(serial1.available<0)”,即当可用字节数小于0时,while语句将仅控制以下单个语句…您需要:

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

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

是关于如何使用16x2液晶显示器的示例

如果你发现没有初始化问题,你可以继续改进你的串行读取代码

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

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

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

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