POC Breath using SMD commercial sensors

Dependencies:   iAQ_Core Adafruit_SGP30_mbed mbed BME680

Revision:
9:81d1b4833516
Parent:
8:976c405a1da5
Child:
10:aad246b57873
--- a/main.cpp	Sun Jun 14 15:01:59 2020 +0000
+++ b/main.cpp	Sun Jun 14 15:13:58 2020 +0000
@@ -232,9 +232,9 @@
 
     int solstart=0;         //FLAG for starting calculations for detecting plateau
     int m=0;
-    int myArray[9];         //sampling 9 values of CO2
-    unsigned int sum=0;     //sum of 9 samples of CO2
-    int avg=0;              //average of 9 samples of CO2
+    int myArray[5];         //sampling 5 values of CO2
+    unsigned int sum=0;     //sum of 5 samples of CO2
+    int avg=0;              //average of 5 samples of CO2
     int difSum=0;           //used for the Standard deviation algorithm
     long double var=0.0;    //used for the Standard deviation algorithm
     float sigma=0.0;        //final value for standar deviation
@@ -295,7 +295,7 @@
 
             //Takes 9 samples of CO2:
             //I have also included printing the values inside the loops so we don't loose any data during calculatins.
-            for(m=0; m<9; m++) {
+            for(m=0; m<4; m++) {
                 //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                 myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                 wait(0.1);
@@ -315,7 +315,7 @@
             }
             while(flags==0) {
                 //While "flags" is enabled, keeps calculating the standard deviation.
-                for(int m=0; m<9; m++) {
+                for(int m=0; m<4; m++) {
                     //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
@@ -333,8 +333,8 @@
                     wait(0.1);
 
                 }
-                avg=sum/9;
-                for(int m=0; m<9; m++) {
+                avg=sum/4;
+                for(int m=0; m<4; m++) {
                     //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
@@ -351,14 +351,14 @@
                     difSum+=(myArray[m]-avg)*(myArray[m]-avg); //Find sum of difference between value X and mean
                     wait(0.1);
                 }
-                var=difSum/9;
+                var=difSum/4;
                 sigma=sqrt(var);
                 if (sigma<0.02) {
 
                     //if SD is less than 0.02 it means that it is too early to start the plateau
                     //So we shift all but the first sample and define the new set of arrays:
 
-                    for(int m=0; m<8; m++) {
+                    for(int m=0; m<4; m++) {
                         //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                         myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                         wait(0.1);
@@ -376,7 +376,7 @@
                         wait(0.1);
 
                     }
-                    myArray[8]=carbon();  //assign a new value for the 9th sample
+                    myArray[4]=carbon();  //assign a new value for the 9th sample
                 }
                 //The new set of arrays are now generated and is sent back to be used for preveious SD calculations.
                 //If sigma for the new set is still small, a newer set will be generated and replaced
@@ -408,7 +408,7 @@
         if ((measurement_started == 1) and (solend==1)) {
             // same process happens for finishing the plateau:
 
-            for(m=0; m<9; m++) {
+            for(m=0; m<4; m++) {
                 //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                 myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                 wait(0.1);
@@ -426,7 +426,7 @@
                 wait(0.1);
             }
             while(flage==0) {
-                for(int m=0; m<9; m++) {
+                for(int m=0; m<4; m++) {
                     //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
@@ -443,8 +443,8 @@
                     sum2+=myArray[m];
                     wait(0.1);
                 }
-                avg2=sum2/9;
-                for(int m=0; m<9; m++) {
+                avg2=sum2/4;
+                for(int m=0; m<4; m++) {
                     //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
@@ -461,11 +461,11 @@
                     difSum2+=(myArray[m]-avg2)*(myArray[m]-avg2);
                     wait(0.1);
                 }
-                var2=difSum2/9;
+                var2=difSum2/4;
                 sigma2=sqrt(var2);
                 if (sigma2<0.05) {
                     // here we defined the end threshold to be 0.05, it can be changed later based on experiment results
-                    for(int m=0; m<8; m++) {
+                    for(int m=0; m<4; m++) {
                         //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor
                         myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                         wait(0.1);
@@ -483,7 +483,7 @@
                         wait(0.1);
 
                     }
-                    myArray[8]=carbon();
+                    myArray[4]=carbon();
                 } else {
                     sol=1;  //Solenoid is OFF 1
                     //ttl.printf("tt%.2f,ff%.2f,cc%.2f,sa%i,sb%i,sc%i,sd%i,se%i,sf%i,sg%i,sh%i,ti%.2f\n",getTemp(),flow(), 100.00,s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read()); //chemical sensor