久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于Ardunio的DHT22車內環境監測程序
[打印本頁]
作者:
Hightdream
時間:
2017-12-19 21:32
標題:
基于Ardunio的DHT22車內環境監測程序
基于Ardunio的車內環境監測
單片機源程序如下:
#include <DHT22.h>
// Only used for sprintf
#include <stdio.h>
#define Aout A1
int led = 2;
int temp = 0;
// Data wire is plugged into port 7 on the Arduino
// Connect a 4.7K resistor between VCC and the data pin (strong pullup)
#define DHT22_PIN 7
// Setup a DHT22 instance
DHT22 myDHT22(DHT22_PIN);
int dustPin=A0;
double dustVal=0;
int ledPower=22;
int delayTime=280;
int delayTime2=40;
int offTime=9680;
double getOutputV() {
digitalWrite(ledPower,LOW);
delayMicroseconds(delayTime);
dustVal=analogRead(dustPin);
delayMicroseconds(delayTime2);
digitalWrite(ledPower,HIGH);
delayMicroseconds(offTime);
//Arduino模擬量讀取值的范圍為0~1023,以下換算為0~5v
double outputV = dustVal / 1024 * 5;
return outputV;
}
/**
根據輸出電壓計算灰塵密度
*/
double getDustDensity(double outputV) {
//輸出電壓和灰塵密度換算公式: ug/m3 = (V - 0.9) / 5 * 1000
double ugm3 = abs((outputV - 0.9) / 5 * 1000);
//去除檢測不到的范圍
return ugm3;
}
/**
根據灰塵密度計算AQI
環境空氣質量指數(AQI)技術規定(試行)](http://kjs.mep.gov.cn/hjbhbz/bzwb/dqhjbh/jcgfffbz/201203/t20120302_224166.htm
*/
double getAQI(double ugm3) {
double aqiL = 0;
double aqiH = 0;
double bpL = 0;
double bpH = 0;
double aqi = 0;
//根據pm2.5和aqi對應關系分別計算aqi
if (ugm3 >= 0 && ugm3 <= 35) {
aqiL = 0;
aqiH = 50;
bpL = 0;
bpH = 35;
} else if (ugm3 > 35 && ugm3 <= 75) {
aqiL = 50;
aqiH = 100;
bpL = 35;
bpH = 75;
} else if (ugm3 > 75 && ugm3 <= 115) {
aqiL = 100;
aqiH = 150;
bpL = 75;
bpH = 115;
} else if (ugm3 > 115 && ugm3 <= 150) {
aqiL = 150;
aqiH = 200;
bpL = 115;
bpH = 150;
} else if (ugm3 > 150 && ugm3 <= 250) {
aqiL = 200;
aqiH = 300;
bpL = 150;
bpH = 250;
} else if (ugm3 > 250 && ugm3 <= 350) {
aqiL = 300;
aqiH = 400;
bpL = 250;
bpH = 350;
} else if (ugm3 > 350) {
aqiL = 400;
aqiH = 500;
bpL = 350;
bpH = 500;
}
//公式aqi = (aqiH - aqiL) / (bpH - bpL) * (desity - bpL) + aqiL;
aqi = (aqiH - aqiL) / (bpH - bpL) * (ugm3 - bpL) + aqiL;
return aqi;
}
/**
根據aqi獲取級別描述
*/
String getGradeInfo(double aqi) {
String gradeInfo;
if (aqi >= 0 && aqi <= 50) {
gradeInfo = String("Perfect");
} else if (aqi > 50 && aqi <= 100) {
gradeInfo = String("Good");
} else if (aqi > 100 && aqi <= 150) {
gradeInfo = String("Mild polluted");
} else if (aqi > 150 && aqi <= 200) {
gradeInfo = String("Medium polluted");
} else if (aqi > 200 && aqi <= 300) {
gradeInfo = String("Heavily polluted");
} else if (aqi > 300 && aqi <= 500) {
gradeInfo = String("Severely polluted");
} else {
gradeInfo = String("Broken roof!!!");
}
return gradeInfo;
}
/*
LCD Arduino
PIN1 = GND
PIN2 = 5V
RS(CS) = 8;
RW(SID)= 9;
EN(CLK) = 3;
PIN15 PSB = GND;
*/
#include "LCD12864RSPI.h"
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
unsigned char msg1[]={0xCA, 0xAA,0xB6, 0xC8}; //濕度
unsigned char msg2[]={ 0xCE, 0xC2, 0xB6, 0xC8}; //溫度
unsigned char msg3[]={ 0xD3, 0xD0, 0xBA, 0xA6,0xC6,0xF8,0xCC,0xE5,0xC5,0xA8,0xB6,0xC8,0xB9,
0xFD,0xB8,0xDF};
unsigned char msg4[]={ 0xC7, 0xEB, 0xB1, 0xA3,0xB3,0xD6,0xBF,0xD5,0xC6,0xF8,0xB3,0xA9,0xCD,
0xA8,0xBB, 0xF2,};
unsigned char msg5[]={ 0xBD, 0xF8,0xD0,0xD0,0xB7,0xC0,0xBB,0xA4};
unsigned char msg6[]="AQI:";
// unsigned char msg7[]="PM2.5";
unsigned char msg8[]={ 0xC7,0xD7,0xA3,0xAC,0xBB,0xB6,0xD3,0xAD,0xC4,0xFA,0xCA,0xB9,0xD3,
0xC3,0xA3, 0xA1};
unsigned char msg9[]={ 0xD3,0xC5};
unsigned char msg10[]={ 0xC1,0xBC};
unsigned char msg11[]={ 0xC7,0xE1,0xB6,0xC8,0xCE,0xDB,0xC8,0xBE};
unsigned char msg12[]={ 0xD6,0xD0,0xB6,0xC8,0xCE,0xDB,0xC8,0xBE};
unsigned char msg13[]={ 0xD6,0xD8,0xB6,0xC8,0xCE,0xDB,0xC8,0xBE};
unsigned char msg16[]={ 0xD1,0xCF,0xD6,0xD8,0xCE,0xDB,0xC8,0xBE};
unsigned char msg14[]={ 0xBC,0xEC,0xB2,0xE2,0xB5,0xBD,0xD3,0xD0,0xBA,0xA6,0xC6,0xF8,0xCC,
0xE5,0xD4, 0xDA};
unsigned char msg15[]={ 0xB0,0xB2,0xC8,0xAB,0xB7,0xB6,0xCE,0xA7,0xC4,0xDA,0xA3,0xA1};
unsigned char logo0[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,
0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,
0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0x40,0x00,
0x00,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x78,0x03,0xF8,0x00,
0x07,0xF0,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x07,0xFE,0x00,
0x0F,0xFC,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x1F,0xBF,0x00,
0x3F,0x7E,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x3E,0x0F,0x80,
0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x7C,0x07,0xC0,
0xF8,0x0F,0x87,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0xF8,0x01,0xE1,
0xF0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0xF0,0x01,0xE1,
0xE0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0xE0,0x00,0xE1,
0xC0,0x01,0xC3,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xF0,0x00,0x0C,0x00,
0x0C,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x70,0x00,0x1E,0x00,
0x1E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x78,0x00,0x1F,0x00,
0x3E,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x00,0x07,0x80,
0xF8,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3C,0x00,0x03,0xE1,
0xF0,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xFF,
0xE0,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,
0x80,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x3F,
0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,
0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
void s_wsd(int r,int c)//在12864的X,Y坐標點顯示Dht11的溫度和濕度
{
char tws[16];
myDHT22.readData();
snprintf(tws, sizeof(tws),"%i.%01hioC %i.%01i%%RH",myDHT22.getTemperatureCInt()/10, abs(myDHT22.getTemperatureCInt()%10),myDHT22.getHumidityInt()/10, myDHT22.getHumidityInt()%10);
LCDA.DisplayString(r,c,(unsigned char *)tws,sizeof(tws));
}
void g_wsd(int x,int y)
{
char buf[14];
double outputV = getOutputV();
double ugm3 = getDustDensity(outputV);
double aqi = getAQI(ugm3);
int ugm31=ugm3;
int aqi1=aqi;
snprintf(buf, sizeof(buf),"PM2.5:%3iugm3",ugm31);
LCDA.DisplayString(x,y,(unsigned char *)buf,sizeof(buf));
}
void setup()
{LCDA.Initialise(); // 屏幕初始化
delay(100);
LCDA.DisplayString(1,0,msg8,sizeof(msg8));
delay(2000);
LCDA.CLEAR();//清屏
delay(100);
LCDA.DrawFullScreen(logo0);
delay(2000);
LCDA.CLEAR();//清屏
delay(100);
// start serial port
Serial.begin(9600);
Serial.println("DHT22 Library Demo");
pinMode(Aout, INPUT);
pinMode(led,OUTPUT);
pinMode(ledPower,OUTPUT);
pinMode(dustPin, INPUT);
}
void loop()
{
LCDA.CLEAR();//清屏
delay(100);
DHT22_ERROR_t errorCode;
delay(100);
Serial.print("Requesting data...");
temp = analogRead(Aout);
Serial.print("CO: ");
Serial.println(temp);
if((100<temp)&&(temp<=250) )
{
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
// wait for a second
LCDA.DisplayString(0,0,msg3,sizeof(msg3));
LCDA.DisplayString(1,0,msg4,sizeof(msg4));
LCDA.DisplayString(2,0,msg5,sizeof(msg5));
delay(3000);
digitalWrite(led, LOW);
LCDA.CLEAR();//清屏
}
if( temp>250)
{delay(100);
digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
// wait for a second
LCDA.DisplayString(0,0,msg3,sizeof(msg3));
LCDA.DisplayString(1,0,msg4,sizeof(msg4));
LCDA.DisplayString(2,0,msg5,sizeof(msg5));
delay(4000);
//LCDA.CLEAR();//清屏
}
if(temp<=100)
{
digitalWrite(led, LOW);// turn the LED on (HIGH is the voltage level)
LCDA.CLEAR();//清屏
delay(200);
LCDA.DisplayString(0,0,msg14,sizeof(msg14));
LCDA.DisplayString(1,0,msg15,sizeof(msg15));
delay(3000);
LCDA.CLEAR();//清屏
}
double outputV = getOutputV(); //采樣獲取輸出電壓
double ugm3 = getDustDensity(outputV); //計算灰塵濃度
double aqi = getAQI(ugm3); //計算aqi
String gradeInfo = getGradeInfo(aqi); //計算級別
Serial.print("dianya ");
Serial.println(outputV);
Serial.print("pm2.5 ");
Serial.println(ugm3);
Serial.print("AQI ");
Serial.println(aqi);
Serial.print("dengji ");
Serial.println(getGradeInfo(aqi));
delay(100);
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
基于Ardunio的車內環境檢測儀.rar
(3.4 KB, 下載次數: 29)
2017-12-19 21:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
精品一区二区三区中文字幕
|
日本一区二区不卡
|
神马午夜嘿嘿
|
国v精品久久久网
|
天天做天天爽
|
日本中文字幕在线视频
|
超碰在线成人
|
国产精品国产精品国产专区不片
|
中文字幕精品三区
|
av超碰在线
|
日韩女优在线观看
|
婷婷四房综合激情五月
|
三级黄色片免费看
|
www.青青草
|
国产一级18片视频
|
国产一级黄色大片
|
欧美色综合
|
久久免费国产视频
|
精品国产三级
|
www.99色
|
成人免费在线视频
|
亚洲视频在线免费观看
|
国产亚洲欧美在线
|
国产欧美一区二区
|
九九九视频
|
成人免费高清
|
男人操女人的网站
|
午夜影院污
|
999精品视频
|
成人一区二区在线
|
99九九久久
|
黄色大片av
|
国产一区二区三区四区
|
国产aⅴ爽av久久久久成人
|
成人一区二区三区四区
|
五月天婷婷激情
|
五月天开心网
|
午夜视频在线播放
|
午夜视频免费观看
|
精品亚洲一区二区三区
|
久久不雅视频
|