Untitled

mail@pastecode.io avatarunknown
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();
  }
}