12.pm2.5感測
#include "GP2Y1010AU0F.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27
#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() {
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.println(String("outputV=") + outputV + "\tug/m3=" + ugm3 + "\tAQI=" + aqi + "\tgrade=" + grade);
lcd.setCursor(0,0);
lcd.print("AQI= ");
lcd.print(aqi);
lcd.setCursor(0,1);
lcd.print(grade);
lcd.print(" ");
//间隔
delay(1000);
}