15.溫溼度+AQI

#include <SoftwareSerial.h>

#include "GP2Y1010AU0F.h"

#include <DHT.h>                      //載入DHT.h函式庫

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

#define DHTPIN 8                     //將DHT11連接到8腳位    

#define DHTTYPE DHT22           //設定感測器型號為DHT11

LiquidCrystal_I2C lcd(0x3F,20,4);   // 若LCD 無法啟用,請將0X3F 改為0X27

DHT dht(DHTPIN, DHTTYPE);

#define PIN_LED 15

#define PIN_OUTPUT A0

GP2Y1010AU0F GP2Y1010AU0F(PIN_LED, PIN_OUTPUT);

void setup() {

Serial.begin(9600); 

 lcd.init();                     

 lcd.backlight(); 

 lcd.clear();

}

void loop() {

float h = dht.readHumidity();       //讀取感測器濕度

float t = dht.readTemperature();  //讀取感測器溫度

double outputV = GP2Y1010AU0F.getOutputV(); //采样获取输出电压

  double ugm3 = GP2Y1010AU0F.getDustDensity(outputV); //计算灰尘浓度

  double aqi = GP2Y1010AU0F.getAQI(ugm3); //计算aqi

  int gradeInfo = GP2Y1010AU0F.getGradeInfo(aqi); //计算级别

  String grade;

  switch (gradeInfo) {

    case GRADE_PERFECT:

      grade = String("Good");

      break;

    case GRADE_GOOD:

      grade = String("Moderate");

      break;

    case GRADE_POLLUTED_MILD:

      grade = String("Bad for Sensitive Groups");

      break;

    case GRADE_POLLUTED_MEDIUM:

      grade = String("Unhealthy");

      break;

    case GRADE_POLLUTED_HEAVY:

      grade = String("Very Unhealthy");

      break;

    case GRADE_POLLUTED_SEVERE:

      grade = String("Hazardous");

      break;

  }

Serial.print("RH=");

Serial.print(h);

Serial.print("% ; T=");

Serial.print(t);

Serial.print((char) 0xDF);

Serial.println("C");

lcd.clear();

lcd.setCursor(0,0);

lcd.print("RH= ");

lcd.print(h);

lcd.print(" %");

lcd.setCursor(0,1);

lcd.print("T= ");

lcd.print(t);

lcd.print(" ");

lcd.print((char) 0xDF);

lcd.print("C");

lcd.setCursor(0,2);

  lcd.print("AQI= ");

  lcd.print(aqi);

  lcd.setCursor(0,3);

  lcd.print("grade= ");

  lcd.print(grade);

  lcd.print("     ");

delay(1000);

}