POC Breath using SMD commercial sensors

Dependencies:   iAQ_Core Adafruit_SGP30_mbed mbed BME680

Files at this revision

API Documentation at this revision

Comitter:
christodoulos
Date:
Sun Jun 14 15:47:13 2020 +0000
Parent:
9:81d1b4833516
Commit message:
CO2 back to 9 samples

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 81d1b4833516 -r aad246b57873 main.cpp
--- a/main.cpp	Sun Jun 14 15:13:58 2020 +0000
+++ b/main.cpp	Sun Jun 14 15:47:13 2020 +0000
@@ -113,7 +113,7 @@
     wait(0.5);
     ttl.printf("$$");//enter command mode
     wait(0.5);
-    ttl.printf("SN,POC Breath v3\r");//set new name
+    ttl.printf("SN,POC Breath\r");//set new name
     wait(0.5);
     ttl.printf("SS,C0\r");//set transparent uart
     wait(0.5);
@@ -232,9 +232,9 @@
 
     int solstart=0;         //FLAG for starting calculations for detecting plateau
     int m=0;
-    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 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 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
@@ -260,7 +260,9 @@
         myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
         wait(0.1);
         sgp30.IAQmeasure();//Measurement from SGP30
+
         rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
         ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
         ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
         ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -268,8 +270,8 @@
         float SiTemp=((175.72*temp_code)/65536)-46.85;
         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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
         rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-        wait(0.1);
-
+        
+        wait(0.01);
         if (bf==0) {    //finding base flow before breath
             for(i=0; i<4; i++) {
                 bfArray[i]=flow();
@@ -277,7 +279,7 @@
             }
             fv=sf/4;
             //fv=fv+0.2;
-            fv=0.4;
+            fv=0.1;
             //ttl.printf("set\n");
             bf=1;
         }
@@ -295,32 +297,37 @@
 
             //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<4; m++) {
+            for(m=0; m<9; 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);
                 sgp30.IAQmeasure();//Measurement from SGP30
+
                 rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                 ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                 ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                 ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
                 float temp_code=(rTemp[0]<<8)+rTemp[1];
                 float SiTemp=((175.72*temp_code)/65536)-46.85;
+
                 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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                 rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                wait(0.1);
-
+                
                 myArray[m]=carbon();
                 wait(0.1);
             }
             while(flags==0) {
                 //While "flags" is enabled, keeps calculating the standard deviation.
-                for(int m=0; m<4; m++) {
+                for(int m=0; m<9; 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);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -328,18 +335,20 @@
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
                     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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                     rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                    wait(0.1);
+                    
                     sum+=myArray[m];
                     wait(0.1);
 
                 }
-                avg=sum/4;
-                for(int m=0; m<4; m++) {
+                avg=sum/9;
+                for(int m=0; m<9; 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);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -347,23 +356,25 @@
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
                     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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                     rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                    wait(0.1);
+                    
                     difSum+=(myArray[m]-avg)*(myArray[m]-avg); //Find sum of difference between value X and mean
                     wait(0.1);
                 }
-                var=difSum/4;
+                var=difSum/9;
                 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<4; m++) {
+                    for(int m=0; m<8; 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);
                         sgp30.IAQmeasure();//Measurement from SGP30
+
                         rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                         ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                         ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                         ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -371,12 +382,12 @@
                         float SiTemp=((175.72*temp_code)/65536)-46.85;
                         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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                         rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                        wait(0.1);
+                        
                         myArray[m]=myArray[m+1];  //Shift all CO2 values to the left by 1 value
                         wait(0.1);
 
                     }
-                    myArray[4]=carbon();  //assign a new value for the 9th sample
+                    myArray[8]=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
@@ -387,16 +398,17 @@
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
                     float temp_code=(rTemp[0]<<8)+rTemp[1];
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
-                    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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), 0.00,s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
-                    rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                    wait(0.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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(),0.00,s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
+                   rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
+                   
                     //led=0.4f;  //The brightness is reduced to half during the plateau
                     wait(0.1);
                     flags=1;    //breakes the while loop
@@ -408,12 +420,14 @@
         if ((measurement_started == 1) and (solend==1)) {
             // same process happens for finishing the plateau:
 
-            for(m=0; m<4; m++) {
+            for(m=0; m<9; 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);
                 sgp30.IAQmeasure();//Measurement from SGP30
+
                 rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                 ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                 ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                 ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -421,17 +435,19 @@
                 float SiTemp=((175.72*temp_code)/65536)-46.85;
                 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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                 rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                wait(0.1);
+                
                 myArray[m]=carbon();
                 wait(0.1);
             }
             while(flage==0) {
-                for(int m=0; m<4; m++) {
+                for(int m=0; m<9; 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);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -439,17 +455,19 @@
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
                     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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                     rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                    wait(0.1);
+                    
                     sum2+=myArray[m];
                     wait(0.1);
                 }
-                avg2=sum2/4;
-                for(int m=0; m<4; m++) {
+                avg2=sum2/9;
+                for(int m=0; m<9; 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);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -457,20 +475,22 @@
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
                     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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                     rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                    wait(0.1);
+                    
                     difSum2+=(myArray[m]-avg2)*(myArray[m]-avg2);
                     wait(0.1);
                 }
-                var2=difSum2/4;
+                var2=difSum2/9;
                 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<4; m++) {
+                    for(int m=0; m<8; 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);
                         sgp30.IAQmeasure();//Measurement from SGP30
+
                         rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                         ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                         ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                         ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -478,19 +498,21 @@
                         float SiTemp=((175.72*temp_code)/65536)-46.85;
                         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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                         rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-                        wait(0.1);
+                        
                         myArray[m]=myArray[m+1];
                         wait(0.1);
 
                     }
-                    myArray[4]=carbon();
+                    myArray[8]=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
                     myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
                     wait(0.1);
                     sgp30.IAQmeasure();//Measurement from SGP30
+
                     rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
                     ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
                     ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
                     ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -498,9 +520,9 @@
                     float SiTemp=((175.72*temp_code)/65536)-46.85;
                     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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), 0.00,s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
                     rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
+                    
                     wait(0.1);
 
-
                     flage=1;    //breakes the loop
                 }
             }
@@ -509,7 +531,9 @@
             myiAQ_Core.iAQ_Core_GetNewReading (  &myiAQ_Core_data ); //Measurement from iAQ-Core C
             wait(0.1);
             sgp30.IAQmeasure();//Measurement from SGP30
+
             rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
             ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
             ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
             ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -517,8 +541,8 @@
             float SiTemp=((175.72*temp_code)/65536)-46.85;
             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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
             rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-            wait(0.1);
-//led=0.4f;  //LED is back to full brightness
+            
+            //led=0.4f;  //LED is back to full brightness
             bf=0;       //reset the detecting base flow flag
             fin=1;      //enables the next section flag
 
@@ -527,14 +551,16 @@
         }
 
         if(carbon()<2.00 && fin ==1) {
-            //User has to wait for the CO2 level to drop less than 1% before testing again.
-            //Once it is less than 1%, all the flags and parameters used in calculations are reset
+            //User has to wait for the CO2 level to drop less than 2% before testing again.
+            //Once it is less than 2%, all the flags and parameters used in calculations are reset
 
             //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);
             sgp30.IAQmeasure();//Measurement from SGP30
+
             rslt = myBME680.bme680_get_sensor_data ( &data, &gas_sensor ); //Measurement for BME680
+
             ZMODtemp.write(ZMODTEMPaddr,wInit,2); //maybe?
             ZMODtemp.write(ZMODTEMPaddr,wTemp,1);
             ZMODtemp.read(ZMODTEMPaddr,rTemp,2); //Returns 2 bytes
@@ -542,7 +568,7 @@
             float SiTemp=((175.72*temp_code)/65536)-46.85;
             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,ic%d,iv%d,ir%d,gc%d,gv%d,br%d,bt%.2f,bh%.2f,bp%.2f,zi%f,zh%f,zc%f,st%.2f\n",0.00,flow(), carbon(),s1(),s2(),s3(),s4(),s5(),s6(),s7(),s8(),stream.read(),myiAQ_Core_data.pred, myiAQ_Core_data.Tvoc, myiAQ_Core_data.resistance, sgp30.eCO2,sgp30.TVOC, data.gas_resistance,( data.temperature/100.0f ), ( data.humidity / 1000.0f ), ( data.pressure / 100.0f ),0.00,0.00,0.00,SiTemp);    //Results after 5 mins of ON
             rslt = myBME680.bme680_set_sensor_mode ( &gas_sensor ); //BME680 reset
-            wait(0.1);
+            
             stream.reset();
             stream.stop();
             measurement_started =0;