程序可以简化的,可以采用函数来自动转换为二进制数据,有兴趣可以自己改改
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN A0
int LED_32=11;int LED_16=10;int LED_8=9;int LED_4=6;int LED_2=5;int LED_1=3;
float dustVal=0;
void setup(){
Serial.begin(9600);
pinMode(A1,OUTPUT);
pinMode( A3,OUTPUT);pinMode(LED_32,OUTPUT);pinMode(LED_16,OUTPUT);pinMode(LED_8,OUTPUT);pinMode(LED_4,OUTPUT);pinMode( LED_2,OUTPUT);pinMode(LED_1,OUTPUT);
digitalWrite(LED_32,HIGH);delay(500);digitalWrite(LED_32,LOW);
digitalWrite(LED_16,HIGH);delay(500);digitalWrite(LED_16,LOW);
digitalWrite(LED_8,HIGH);delay(500);digitalWrite(LED_8,LOW);
digitalWrite(LED_4,HIGH);delay(500);digitalWrite(LED_4,LOW);
digitalWrite(LED_2,HIGH);delay(500);digitalWrite(LED_2,LOW);
digitalWrite(LED_1,HIGH);delay(500);digitalWrite(LED_1,LOW);
delay(500);
digitalWrite(LED_32,HIGH);digitalWrite(LED_16,HIGH);digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(A3,HIGH);
delay(500);
digitalWrite(LED_32,LOW);digitalWrite(LED_16,LOW);digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(A3,LOW);//zi jian LED he BB
}
void loop(){
DHT11.read(DHT11PIN);
int i=0;float gongji=0;int pm=0;int aa=0;
for(i=0;i<30;i++){
digitalWrite(A1,LOW); // power on the LED
delayMicroseconds(280);
dustVal=analogRead(A2); // read the dust value via pin 5 on the sensor
delayMicroseconds(40);
digitalWrite(A1,HIGH); // turn the LED off
delayMicroseconds(9680);
gongji=gongji+dustVal;
delay(100);
}
gongji=gongji/30;
pm=int((0.172*5*gongji/1023-0.0999)*1000);
aa=(pm+5)/10;//XIAN SHI HUAN SUAN
if(aa>=32){aa=aa-32;digitalWrite(LED_32,HIGH);} else digitalWrite(LED_32,LOW);;
if(aa>=16){aa=aa-16;digitalWrite(LED_16,HIGH);} else digitalWrite(LED_16,LOW);
if(aa>=8){aa=aa-8;digitalWrite(LED_8,HIGH);} else digitalWrite(LED_8,LOW);
if(aa>=4){aa=aa-4;digitalWrite(LED_4,HIGH);} else digitalWrite(LED_4,LOW);
if(aa>=2){aa=aa-2;digitalWrite(LED_2,HIGH);} else digitalWrite(LED_2,LOW);
if(aa>=1){aa=aa-0;digitalWrite(LED_1,HIGH);} else digitalWrite(LED_1,LOW);//XIAN SHI
if(pm>500){digitalWrite(LED_32,HIGH);digitalWrite(LED_16,HIGH);digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(A3,HIGH);delay(200);
digitalWrite(LED_32,LOW);digitalWrite(LED_16,LOW);digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(A3,LOW);delay(200);
digitalWrite(LED_32,HIGH);digitalWrite(LED_16,HIGH);digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(A3,HIGH);delay(200);
digitalWrite(LED_32,LOW);digitalWrite(LED_16,LOW);digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(A3,LOW);delay(200);
digitalWrite(LED_32,HIGH);digitalWrite(LED_16,HIGH);digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(A3,HIGH);delay(200);
digitalWrite(LED_32,LOW);digitalWrite(LED_16,LOW);digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(A3,LOW);delay(200); }//OVER GAO JING
Serial.print("DHT11_temperature(C):");
Serial.print(DHT11.temperature);
Serial.print(";");
Serial.print("DHT11_Humidity(%):");
Serial.print(DHT11.humidity);
Serial.print(";");
Serial.print("SHARP_PM2.5(ug/m3):");
Serial.print( pm);
Serial.println(";");
}
[ 此帖被yyh在2013-10-15 12:32重新编辑 ]