#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);
/************************** */
}
}