arduino向串口发送数据时掉包_串口数据高位0一直收不到,会arduino的朋友看一下...

本文探讨了在使用Arduino进行串口通信时遇到的数据丢失和高位0未收到的问题,通过代码示例展示了如何进行数据校验,确保数据的完整性和准确性。同时,还展示了如何结合LCD5110显示屏实时显示传感器数据。
摘要由CSDN通过智能技术生成

#include

#include

#include

#include //LCD5110库

#include //dht11库

dht11 DHT11;

#define DHT11PIN 10

#define MQ2PIN A0

#define noisePIN A1

#include

const byte rxPin = 12;

const byte txPin = 13;

SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);

int incomeByte[6];

int data;

int z=0;

int sum;

/*LCD5110接法:

clk  = D7     //clock

din  = D6,   // data-in

dc    = D5,   // data select

reset = D2,   //reset

sce   = D3);  // enable

*/

//lcd5110相关

LCD_PCD8544 lcd;

unsigned long starttime;

void setup() {

//初始化LCD

lcd.begin();

lcd.clear();

lcd.setCursor(0, 0);//在第一行打印出  Environment 字符串

lcd.print("  Environment ");

lcd.setCursor(0, 1);//光标移至第2行(从0开始数算起) 第1个像素(下同)

lcd.print("Temp :     oC");//显示出温度提示(下同)

// lcd.setCursor(73, 1);//光标移至第2行(从0开始数算起) 第72个像素

//lcd.print("oC");//显示出温度单位(下同)

lcd.setCursor(0, 2);

lcd.print("Humi :     %");

// lcd.setCursor(79, 2);

// lcd.print("%");

lcd.setCursor(0, 3);

lcd.print("MQ2  :     ppm");

//lcd.setCursor(66, 3);

//lcd.print("ppm");

lcd.setCursor(0, 4);

lcd.print("PM2.5:     ug");

//lcd.setCursor(0, 5);//光标移至第6行(从0开始数算起) 第37个像素

//lcd.print(" Best wishes");//显示出 Best wishes

lcd.setCursor(0, 5);

lcd.print("Noise:     dB");

pinMode(rxPin, INPUT);

pinMode(txPin, OUTPUT);

mySerial.begin(2400);

Serial.begin(9600);

}

void loop() {

float c ;

while (mySerial.available()>0){

data = mySerial.read();

if(data == 170)

{

z=0;

incomeByte[z]=data;

}

else

{

z++;

incomeByte[z]=data;

}

if(z==6)

{

sum=incomeByte[1]+ incomeByte[2]+ incomeByte[3] + incomeByte[4];

if(incomeByte[5]==sum && incomeByte[6]==255 )

{

float vo=(incomeByte[1]*256.0+incomeByte[2])/1024.0*5000;   //mv

c = vo*0.1

7;

}

}

//串口打印出DHT11测出的温湿度数据

DHT11.read(DHT11PIN);

int dht11temp = DHT11.temperature;

Serial.print("temperature:  ");

Serial.println(dht11temp);

int dht11hum = DHT11.humidity;

Serial.print("humidity:  ");

Serial.println(dht11hum);

int MQ2 = analogRead(MQ2PIN);

int noise = analogRead(noisePIN);

Serial.print("MQ2:  ");

Serial.println(MQ2);

Serial.print("noise:  ");

Serial.println(noise/10);

/***********/

/****************************/

Serial.print("PM2.5:  ");

Serial.print((int)c);

Serial.println("ug/m3 ");

Serial.println();

delay(500);

/*****************************/

//lcd上显示数据

lcd.setCursor(37, 1);//光标移至第2行(从0开始数,1就是第二个) 第37个像素(下同)

lcd.print(dht11temp);//显示出温度(下同)

lcd.setCursor(37, 2);

lcd.print(dht11hum);

lcd.setCursor(37, 3);

lcd.print(MQ2);

lcd.setCursor(37, 4);

lcd.print((int)c);

lcd.setCursor(37, 5);

lcd.print(noise/10);

delay(500);

/************************** */

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值