Untitled
unknown
c_cpp
2 years ago
1.1 kB
9
Indexable
#include <Adafruit_GFX.h>
int pin = 8;
unsigned long duration;
unsigned long starttime;
unsigned long sampletime_ms = 1000;
unsigned long lowpulseoccupancy = 0;
float ratio = 0;
float concentration = 0;
void setup() {
Serial.begin(9600);
pinMode(8,INPUT);
delay(2000);
starttime = millis();//get the current time;
}
void loop() {
duration = pulseIn(pin, 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
lowpulseoccupancy = 0;
Serial.println("C: "+ concentration);
if (concentration < 1000) {
Serial.println("Clean");
} else if(concentration < 10000) {
Serial.println("Good");
} else if (concentration < 20000) {
Serial.println("Acceptable");
} else if(concentration < 50000) {
Serial.println("Heavy");
} else {
Serial.println("Hazard");
}
starttime = millis();
}
}Editor is loading...