Untitled
c_cpp
a month ago
1.1 kB
1
Indexable
Never
#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(); } }