Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: iAQ_Core Adafruit_SGP30_mbed mbed BME680
Revision 10:aad246b57873, committed 2020-06-14
- 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 |
--- 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;