程序来了哈。自己写的,估计比较繁琐,可以再改进
#include <dht11.h>
dht11 DHT11;
#define DHT11PIN A0
int OVER=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( OVER,OUTPUT);pinMode(LED_8,OUTPUT);pinMode(LED_4,OUTPUT);pinMode( LED_2,OUTPUT);pinMode(LED_1,OUTPUT);
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_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH); digitalWrite(OVER,HIGH);
delay(500);
digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(OVER,LOW);//zi jian LED he BB
}
void loop(){
DHT11.read(DHT11PIN);
int i=0;float gongji=0;int pm=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);
if(pm>=10 & pm<30) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,HIGH); }//20
if(pm>=30 & pm<50) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,LOW); }//40
if(pm>=50 & pm<70) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH); }//60
if(pm>=70 & pm<90) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW); }//80
if(pm>=90 & pm<110) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,LOW);digitalWrite(LED_1,HIGH); }//100
if(pm>=110 & pm<130) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,LOW); }//120
if(pm>=130 & pm<150) {digitalWrite(LED_8,LOW);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH); }//140
if(pm>=150 & pm<170) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW); }//160
if(pm>=170 & pm<190) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,HIGH); }//180
if(pm>=190 & pm<210) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,LOW);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,LOW); }//200
if(pm>=210 & pm<230) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,LOW);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH); }//220
if(pm>=230 & pm<250) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW); }//240
if(pm>=250 & pm<270) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,LOW);digitalWrite(LED_1,HIGH); }//260
if(pm>=270 & pm<290) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,LOW); }//280
if(pm>=290 & pm<310) {digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH); }//300
if(pm>300){digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(OVER,HIGH);delay(200);
digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(OVER,LOW);delay(200);
digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(OVER,HIGH);delay(200);
digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(OVER,LOW);delay(200);
digitalWrite(LED_8,HIGH);digitalWrite(LED_4,HIGH);digitalWrite(LED_2,HIGH);digitalWrite(LED_1,HIGH);digitalWrite(OVER,HIGH);delay(200);
digitalWrite(LED_8,LOW);digitalWrite(LED_4,LOW);digitalWrite(LED_2,LOW);digitalWrite(LED_1,LOW);digitalWrite(OVER,LOW);delay(200);}
Serial.print("DHT11_temperature: ");
Serial.print(DHT11.temperature);
Serial.print("C ");
Serial.print("DHT11_Humidity: ");
Serial.print(DHT11.humidity);
Serial.print("% ");
Serial.print("SHARP_PM2.5: ");
Serial.print( pm);
Serial.println("ug/m3");
}