GP2Y1010AU0F 灰塵感測

「GP2Y1010AU0F」的圖片搜尋結果
「GP2Y1010AU0F」的圖片搜尋結果

檢測原理

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

}

把Sensor和Ardiuno連接後,可以連續顯示電壓值。輸出電壓大小與灰塵含量的關係曲線如下圖:

通过电压的波形还可以判断是烟还是尘呢。。。