Skip to content

Instantly share code, notes, and snippets.

@neosarchizo
Created December 7, 2018 01:23
Show Gist options
  • Save neosarchizo/40f65d9573af34ad009cb2345a3f25b3 to your computer and use it in GitHub Desktop.
Save neosarchizo/40f65d9573af34ad009cb2345a3f25b3 to your computer and use it in GitHub Desktop.
[디바이스마트 매거진] PM2008 LED 모니터
#include <pm2008_i2c.h>
PM2008_I2C pm2008_i2c;
void setup() {
pm2008_i2c.begin();
Serial.begin(9600);
pm2008_i2c.command();
delay(1000);
pinMode ( 3, OUTPUT);
pinMode ( 4, OUTPUT);
pinMode ( 5, OUTPUT);
pinMode ( 6, OUTPUT);
}
void loop() {
uint8_t ret = pm2008_i2c.read();
uint8_t pm1p0_grade = 0;
uint8_t pm2p5_grade = 0;
uint8_t pm10p_grade = 0;
uint8_t total_grade = 0;
if (ret == 0) {
// PM 1.0
if (pm2008_i2c.pm1p0_grimm < 16) {
pm1p0_grade = 1;
} else if (pm2008_i2c.pm1p0_grimm < 51) {
pm1p0_grade = 2;
} else if (pm2008_i2c.pm1p0_grimm < 101) {
pm1p0_grade = 3;
} else {
pm1p0_grade = 4;
}
// PM 2.5
if (pm2008_i2c.pm2p5_grimm < 16) {
pm2p5_grade = 1;
} else if (pm2008_i2c.pm2p5_grimm < 51) {
pm2p5_grade = 2;
} else if (pm2008_i2c.pm2p5_grimm < 101) {
pm2p5_grade = 3;
} else {
pm2p5_grade = 4;
}
// PM 10
if (pm2008_i2c.pm10_grimm < 31) {
pm10p_grade = 1;
} else if (pm2008_i2c.pm10_grimm < 81) {
pm10p_grade = 2;
} else if (pm2008_i2c.pm10_grimm < 151) {
pm10p_grade = 3;
} else {
pm10p_grade = 4;
}
// Get worst grade
total_grade = max(pm1p0_grade, pm2p5_grade);
total_grade = max(total_grade, pm10p_grade);
digitalWrite( 3, LOW );
digitalWrite( 4, LOW );
digitalWrite( 5, LOW );
digitalWrite( 6, LOW );
switch (total_grade) {
case 1: {
Serial.println("Good!");
digitalWrite( 3, HIGH );
break;
}
case 2: {
Serial.println("Normal!");
digitalWrite( 4, HIGH );
break;
}
case 3: {
Serial.println("Bad!");
digitalWrite( 5, HIGH );
break;
}
case 4: {
Serial.println("Worst!");
digitalWrite( 6, HIGH );
break;
}
default:
break;
}
}
delay(2000);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment