#include <SoftwareSerial.h>
SoftwareSerial BTserial(2,3); // rx,tx
int DustPin = 8; //먼지 센서
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 5000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
float ugm3 = 0;
void setup() {
Serial.begin(9600);
BTserial.begin(9600);
pinMode(DustPin ,INPUT); // 먼지센서
starttime = millis();
}
void loop() {
duration = pulseIn(DustPin , LOW);
lowpulseoccupancy = lowpulseoccupancy+duration;
if ((millis()-starttime) > sampletime_ms)
{
ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve
ugm3= concentration * 100 /13000;
Serial.print("ugm3 = " ); //미세먼지 시리얼모니터
Serial.print(ugm3);
Serial.println("ug/m3" );
BTserial.print(ugm3); //블루투스
BTserial.print("\r\r\n");
lowpulseoccupancy = 0;
starttime = millis();
}
}