|
|
- #include <math.h>
-
- int DustSensePin = 13;
- unsigned long duration;
- unsigned long starttime;
- unsigned long sampletime_ms = 30000;//sample 30s ;
- unsigned long lowpulseoccupancy = 0;
- float ratio = 0;
- float concentration = 0;
-
- void setup()
- {
- Serial.begin(9600);
- Serial.println("Starting Air Sensor, please wait for readings...");
- pinMode(DustSensePin,INPUT);
- starttime = millis();//get the current time;
- }
-
- void loop()
- {
- duration = pulseIn(DustSensePin, LOW);
- lowpulseoccupancy = lowpulseoccupancy+duration;
-
- if ((millis()-starttime) > sampletime_ms)//if the sample time == 30s
- {
- ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100
- concentration = 1.1*powf(ratio,3)-3.8*powf(ratio,2)+520*ratio+0.62; // using spec sheet curve
- Serial.print(lowpulseoccupancy);
- Serial.print(",");
- Serial.print(ratio);
- Serial.print(",");
- Serial.println(concentration);
- lowpulseoccupancy = 0;
- starttime = millis();
- }
- }
|