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

}