Grove Air Quality Sensor.

Fork of Grove_Air_Quality_Sensor_Library by Seeed

Revision:
2:95009177a860
Parent:
1:e312d147cadd
Child:
3:c25365a52d78
--- a/Air_Quality.cpp	Thu Dec 22 22:33:19 2016 +0000
+++ b/Air_Quality.cpp	Fri Dec 23 20:19:35 2016 +0200
@@ -1,8 +1,3 @@
-//
-// modified by mbed group for use with the mbed platform
-// modification date 9/4/2014
-//
-
 /*
   AirQuality library v1.0
   2010 Copyright (c) Seeed Technology Inc.  All right reserved.
@@ -23,92 +18,89 @@
   License along with this library; if not, write to the Free Software
   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
-#include"Air_Quality.h"
+#include "Air_Quality.h"
 
 // Interrupt Handler Assignment
 Ticker IntHandler;
 
 //Get the avg voltage in 5 minutes.
-void AirQuality::avgVoltage()
-{
-    if(i==150) { //sum 5 minutes
-        vol_standard=temp/150;
-        temp=0;
-        debug("Vol_standard in 5 minutes: %d\n\r",vol_standard);
-        i=0;
+void AirQuality::avgVoltage() {
+    if (i == 150) { //sum 5 minutes
+        vol_standard = temp / 150;
+        temp = 0;
+        debug("Vol_standard in 5 minutes: %d", vol_standard);
+        i = 0;
     } else {
-        temp+=first_vol;
+        temp += first_vol;
         i++;
     }
 }
 
-void AirQuality::init(PinName pin, void(*IRQ)(void))
-{
-    _pin=pin;
+void AirQuality::init(PinName pin, void(*IRQ)(void)) {
+    _pin = pin;
     AnalogIn sensor(_pin);
     unsigned char i = 0;
-    debug("Air Quality Sensor Starting Up...(20s)\n\r");
+    debug("Air Quality Sensor Starting Up...(20s)");
     wait(20); //20s
-    init_voltage = sensor.read() * 1000; // boost the value to be on a 0 -> 1000 scale for compatibility
-    debug("The initial voltage is %d%% of source \n\r",init_voltage/10);
-    while(init_voltage) {
-        if((init_voltage < 798) && (init_voltage > 10)) {
+    init_voltage = (int) (sensor.read() * 1000); // boost the value to be on a 0 -> 1000 scale for compatibility
+    debug("The initial voltage is %d%% of source ", init_voltage / 10);
+    while (init_voltage) {
+        if ((init_voltage < 798) && (init_voltage > 10)) {
             // the init voltage is ok
-            first_vol = sensor.read() * 1000;//initialize first value
+            first_vol = (int) (sensor.read() * 1000);//initialize first value
             last_vol = first_vol;
             vol_standard = last_vol;
-            debug("Sensor ready.\n\r");
+            debug("Sensor ready.");
             error = false;;
             break;
-        } else if(init_voltage > 798 || init_voltage <= 10) {
+        } else if (init_voltage > 798 || init_voltage <= 10) {
             // The sensor is not ready, wait a bit for it to cool off
             i++;
-            debug("Sensor not ready (%d), try %d/5, waiting 60 seconds...\n\r",init_voltage,i);
+            debug("Sensor not ready (%d), try %d/5, waiting 60 seconds...", init_voltage, i);
             wait(60);//60s
-            init_voltage = sensor.read() * 1000;
-            if(i==5) {
+            init_voltage = (int) (sensor.read() * 1000);
+            if (i == 5) {
                 // After 5 minutes warn user that the sensor may be broken
                 i = 0;
                 error = true;
-                debug("Sensor Error! You may have a bad sensor. :-(\n\r");
+                debug("Sensor Error! You may have a bad sensor. :-(");
             }
         } else
             break;
     }
-    // Call AirQualityInterrupt every 2seconds
+    // Call AirQualityInterrupt every 2 seconds
     IntHandler.attach(IRQ, 2.0);
-    debug("Test begin...\n\r");
+    debug("Test begin...");
 }
 
-int AirQuality::slope(void)
-{
-    while(timer_index) {
-        if(first_vol-last_vol > 400 || first_vol > 700) {
-            debug("High pollution! Force signal active.\n\r");
+air_quality_values AirQuality::slope(void) {
+    while (timer_index) {
+        if (first_vol - last_vol > 400 || first_vol > 700) {
+            debug("Very high pollution! Force signal active.");
             timer_index = 0;
             avgVoltage();
-            return 0;
-        } else if((first_vol - last_vol > 400 && first_vol < 700) || first_vol - vol_standard > 150) {
-            debug("sensor_value:%d",first_vol);
-            debug("\t High pollution!\n\r");
+            return VERY_HIGH_POLLUTION;
+        } else if ((first_vol - last_vol > 400 && first_vol < 700) || first_vol - vol_standard > 150) {
+            debug("sensor_value:%d", first_vol);
+            debug("High pollution!");
             timer_index = 0;
             avgVoltage();
-            return 1;
+            return HIGH_POLLUTION;
 
-        } else if((first_vol-last_vol > 200 && first_vol < 700) || first_vol - vol_standard > 50) {
+        } else if ((first_vol - last_vol > 200 && first_vol < 700) || first_vol - vol_standard > 50) {
             //debug(first_vol-last_vol);
-            debug("sensor_value:%d",first_vol);
-            debug("\t Low pollution!\n\r");
+            debug("sensor_value:%d", first_vol);
+            debug("Low pollution!");
             timer_index = 0;
             avgVoltage();
-            return 2;
+            return LOW_POLLUTION;
         } else {
             avgVoltage();
-            debug("sensor_value:%d",first_vol);
-            debug("\t Air fresh\n\r");
+            debug("sensor_value:%d", first_vol);
+            debug("No pollution");
             timer_index = 0;
-            return 3;
+            return NO_POLLUTION;
         }
     }
-    return -1;
+    return UNKNOWN;
 }