|
dht11在单独测试时是很正常的,可是把它和攀腾pm2.5传感器搭在一起,5110显示,他却无法正常的读数了,求大神帮帮忙
// SCK clk - Pin 12
// MOSI dir- Pin 11
// DC dc - Pin 10
// RST rst- Pin 8
// CS ce- Pin 9
//
int rain=4;//rain sensor
#include <LCD5110_Basic.h>
#include<dht11.h>
dht11 DHT11;
#define DHT11PIN 5//dht11
LCD5110 myGLCD(12,11,10,8,9);
#define BAUDRATE 9600
#define DEBUGOUTPUT 0
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
int generatedChecksum = 0;
int checksum = 0;
int payloadLength = 0;
byte payloadData[20] = {0};
int pm1p0=0;
int pm2p5=0;
int pm10=0;
int vpm1p0=0;
int vpm2p5=0;
int vpm10=0;
int npm1p0=0;
int npm2p5=0;
int npm10=0;
int cuontpm1p0=0;
int cuontpm2p5=0;
int cuontpm10=0;
int cuontvpm1p0=0;
int cuontvpm2p5=0;
int cuontvpm10=0;
int temp=0;
// system variables
long lastReceivedPacket = 0;
boolean bigPacket = false;
////////////////////////////////////////////
extern uint8_t SmallFont[];
float y;
uint8_t* bm;
int pacy;
////////////////////////////////////////////
//////////////////////////
// Microprocessor Setup //
//////////////////////////
void setup() {
pinMode(4,INPUT);
Serial.begin(BAUDRATE); // USB
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
myGLCD.clrScr();
myGLCD.print("AUTOMATIC WINDOWS", CENTER, 5);
myGLCD.print("TIANYI AI LAB", CENTER, 20);
//myGLCD.setFont(TinyFont);
myGLCD.print("(C)2017 by", CENTER, 30);
myGLCD.print("CHEN YANG ZHU", CENTER, 40);
delay(2000);
myGLCD.clrScr();
//myGLCD.print("USAPM1.0:", 0, 0);
//myGLCD.print("USAPM2.5:", 0, 8);
//myGLCD.print("USAPM1 0:", 0, 16);
// myGLCD.print("CHNPM1.0:", 0, 24);
myGLCD.print("CHNPM2.5:", 0, 32);
// myGLCD.print("CHNPM1 0:", 0, 40);
delay(2);
}
////////////////////////////////
// Read data from Serial UART //
////////////////////////////////
byte ReadOneByte() {
int ByteRead;
while(!Serial.available());
ByteRead = Serial.read();
#if DEBUGOUTPUT
Serial.print((char)ByteRead); // echo the same byte out the USB serial (for debug purposes)
#endif
return ByteRead;
}
/////////////
//MAIN LOOP//
/////////////
void loop() {
int chk=DHT11.read(DHT11PIN);
float temp=DHT11.temperature;
int humidity=DHT11.humidity;
// while(1){
if(ReadOneByte() == 0x42) {
if(ReadOneByte() == 0x4D) {
payloadLength = ReadOneByte();
payloadLength =payloadLength<<8;
payloadLength=payloadLength+ReadOneByte();
if(payloadLength > 20) //Payload length can not be greater than 169
return;
generatedChecksum = 0;
generatedChecksum=generatedChecksum+0x42+0x4D+0x14 ;
for(int i = 0; i < payloadLength-2; i++)
{
payloadData[i] = ReadOneByte(); //Read payload into memory
generatedChecksum += payloadData[i];
}
checksum = ReadOneByte();
checksum =checksum<<8;
checksum =checksum+ReadOneByte(); //Read checksum byte from stream
if(checksum == generatedChecksum)
{
for(int i = 0; i < payloadLength-2; i++)
{ // Parse the payload
switch (i)
{
case 0:
temp=pm1p0;
pm1p0=payloadData[i];
i++;
pm1p0=pm1p0<<8;
pm1p0=pm1p0+payloadData[i];
//Serial.println(pm1p0);
if(cuontpm1p0<=9)
{
if(cuontpm1p0!=0)
{
pm1p0+=temp;
}
else
{
}
cuontpm1p0++;
}
if(cuontpm1p0==10)
{
cuontpm1p0=0;
pm1p0=0;
}
break;
case 2:
temp=pm2p5;
pm2p5=payloadData[i];
i++;
pm2p5=pm2p5<<8;
pm2p5=pm2p5+payloadData[i];
//Serial.println(pm2p5);
if(cuontpm2p5<=9)
{
if(cuontpm2p5!=0)
{
pm2p5+=temp;
}
cuontpm2p5++;
}
if(cuontpm2p5==10)
{
cuontpm2p5=0;
pm2p5=0;
}
break;
case 4:
temp= pm10;
pm10=payloadData[i];
i++;
pm10=pm10<<8;
pm10=pm10+payloadData[i];
// Serial.println(pm10);
if(cuontpm10<=9)
{
if(cuontpm10!=0)
{
pm10+=temp;
}
cuontpm10++;
}
if(cuontpm10==10)
{
cuontpm10=0;
pm10=0;
}
break;
case 6:
temp=vpm1p0;
vpm1p0=payloadData[i];
i++;
vpm1p0=vpm1p0<<8;
vpm1p0=vpm1p0+payloadData[i];
//Serial.print("CHNPM1.0:");
//Serial.println(vpm1p0);
if(cuontvpm1p0<=9)
{
if(cuontvpm1p0!=0)
{
vpm1p0+=temp;
//Serial.println(pm1p0);
}
else
{
// Serial.println(pm1p0);
}
cuontvpm1p0++;
}
if(cuontvpm1p0==10)
{
cuontvpm1p0=0;
vpm1p0=0;
}
break;
case 8:
temp=vpm2p5;
vpm2p5=payloadData[i];
i++;
vpm2p5=vpm2p5<<8;
vpm2p5=vpm2p5+payloadData[i];
//Serial.print("CHNPM2.5:");
//Serial.println(vpm2p5);
if(cuontvpm2p5<=9)
{
if(cuontvpm2p5!=0)
{
vpm2p5+=temp;
//Serial.println(pm1p0);
}
else
{
// Serial.println(pm1p0);
}
cuontvpm2p5++;
}
if(cuontvpm2p5==10)
{
Serial.print("CHNPM2.5:");
Serial.println(vpm2p5/10);
myGLCD.print(" ", 53, 32);
myGLCD.printNumI(vpm2p5/10, 53, 32);
cuontvpm2p5=0;
vpm2p5=0;
}
break;
case 10:
temp=vpm10;
vpm10=payloadData[i];
i++;
vpm10=vpm10<<8;
vpm10=vpm10+payloadData[i];
//Serial.print("CHNPM10:");
//Serial.println(vpm10);
if(cuontvpm10<=9)
{
if(cuontvpm10!=0)
{
vpm10+=temp;
//Serial.println(pm1p0);
}
else
{
// Serial.println(pm1p0);
}
cuontvpm10++;
}
if(cuontvpm10==10)
{
cuontvpm10=0;
vpm10=0;
}
break;
case 12:
npm1p0=payloadData[i];
i++;
npm1p0=npm1p0<<8;
npm1p0=npm1p0+payloadData[i];
break;
case 14:
npm2p5=payloadData[i];
i++;
npm2p5=npm2p5<<8;
npm2p5=npm2p5+payloadData[i];
break;
case 16:
npm10=payloadData[i];
i++;
npm10=npm10<<8;
npm10=npm10+payloadData[i];
break;
default:break;
} // switch
} // for loop
/*
#if !DEBUGOUTPUT
// *** Add your code here ***
if(bigPacket) {
if(poorQuality == 0)
digitalWrite(LED, HIGH);
else
digitalWrite(LED, LOW);
Serial.print("PoorQuality: ");
Serial.print(poorQuality, DEC);
Serial.print(" Attention: ");
Serial.print(attention, DEC);
Serial.print(" Time since last packet: ");
Serial.print(millis() - lastReceivedPacket, DEC);
lastReceivedPacket = millis();
Serial.print("\n");
}
#endif
bigPacket = false;
*/
}
else {
}
}
}
Serial.print("over");
myGLCD.setFont(SmallFont);
myGLCD.printNumI(humidity,0,0);
myGLCD.printNumF(float(temp),2,RIGHT,0);
Serial.println(humidity);
Serial.println(temp);
//}
} |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|