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);
}