hand held final version used for coolterm

Dependencies:   mbed SoftSerial

Committer:
mehrnaz
Date:
Fri Jul 12 15:59:34 2019 +0000
Revision:
2:3de0589260d2
Parent:
1:08bbc3ecd836
handheld final version used for coolterm

Who changed what in which revision?

UserRevisionLine numberNew contents of line
christodoulos 0:d034cdad5b6d 1 #include "mbed.h"
mehrnaz 2:3de0589260d2 2 #include "flow.h"
christodoulos 0:d034cdad5b6d 3
mehrnaz 2:3de0589260d2 4 Serial ttl(PA_2,PA_3);
mehrnaz 2:3de0589260d2 5 DigitalOut sol(PC_5);
christodoulos 0:d034cdad5b6d 6
mehrnaz 2:3de0589260d2 7 int main()
christodoulos 0:d034cdad5b6d 8 {
mehrnaz 2:3de0589260d2 9 ttl.baud(9600);
mehrnaz 2:3de0589260d2 10 flow();
mehrnaz 2:3de0589260d2 11 carbon();
mehrnaz 2:3de0589260d2 12 int bf=0;
mehrnaz 2:3de0589260d2 13 int i=0;
mehrnaz 2:3de0589260d2 14 float bfArray[4];
mehrnaz 2:3de0589260d2 15 float sf=0;
mehrnaz 2:3de0589260d2 16 float fv=0;
mehrnaz 2:3de0589260d2 17 int myArray[9];
mehrnaz 2:3de0589260d2 18 int measurement_started=0;
mehrnaz 2:3de0589260d2 19 unsigned int sum=0;
mehrnaz 2:3de0589260d2 20 long double var=0.0;
mehrnaz 2:3de0589260d2 21 float sigma=0.0;
mehrnaz 2:3de0589260d2 22 int difSum=0;
mehrnaz 2:3de0589260d2 23 unsigned int sum2=0;
mehrnaz 2:3de0589260d2 24 long double var2=0.0;
mehrnaz 2:3de0589260d2 25 float sigma2=0.0;
mehrnaz 2:3de0589260d2 26 int difSum2=0;
mehrnaz 2:3de0589260d2 27 int avg2=0;
mehrnaz 2:3de0589260d2 28 int avg=0;
mehrnaz 2:3de0589260d2 29 int m=0;
mehrnaz 2:3de0589260d2 30 int flags=0;
mehrnaz 2:3de0589260d2 31 int flage=0;
mehrnaz 2:3de0589260d2 32 int solstart=0;
mehrnaz 2:3de0589260d2 33 int solend=0;
mehrnaz 2:3de0589260d2 34 int fin=0;
mehrnaz 2:3de0589260d2 35
mehrnaz 2:3de0589260d2 36 //float CO_2;
mehrnaz 2:3de0589260d2 37
mehrnaz 2:3de0589260d2 38 while(1)
mehrnaz 2:3de0589260d2 39 {
mehrnaz 2:3de0589260d2 40 //CO_2=(float)carbon()/10000;
mehrnaz 2:3de0589260d2 41 ttl.printf("flow: %f, CO2: %d \n",flow(), carbon());
mehrnaz 2:3de0589260d2 42 if (bf==0)
mehrnaz 2:3de0589260d2 43 {
mehrnaz 2:3de0589260d2 44 for(i=0; i<4; i++)
mehrnaz 2:3de0589260d2 45 {
mehrnaz 2:3de0589260d2 46 bfArray[i]=flow();
mehrnaz 2:3de0589260d2 47 sf+=bfArray[i];
mehrnaz 2:3de0589260d2 48 }
mehrnaz 2:3de0589260d2 49 fv=sf/4;
mehrnaz 2:3de0589260d2 50 fv=fv+0.2;
mehrnaz 2:3de0589260d2 51 ttl.printf("set\n");
mehrnaz 2:3de0589260d2 52 bf=1;
mehrnaz 2:3de0589260d2 53 }
mehrnaz 2:3de0589260d2 54
mehrnaz 2:3de0589260d2 55 if ((flow()>fv) and (measurement_started ==0))
mehrnaz 2:3de0589260d2 56 {
mehrnaz 2:3de0589260d2 57 ttl.printf("ready to detect plateau \n");
mehrnaz 2:3de0589260d2 58 measurement_started = 1;
mehrnaz 2:3de0589260d2 59 }
mehrnaz 2:3de0589260d2 60
mehrnaz 2:3de0589260d2 61 if ((measurement_started == 1) and (solstart==0))
mehrnaz 2:3de0589260d2 62 {
mehrnaz 2:3de0589260d2 63 ttl.printf("starting...\n");
mehrnaz 2:3de0589260d2 64
mehrnaz 2:3de0589260d2 65 for(m=0;m<9;m++)
mehrnaz 2:3de0589260d2 66 {
mehrnaz 2:3de0589260d2 67 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 68 myArray[m]=carbon();
mehrnaz 2:3de0589260d2 69 }
mehrnaz 2:3de0589260d2 70 while(flags==0)
mehrnaz 2:3de0589260d2 71 {
mehrnaz 2:3de0589260d2 72 for(int m=0;m<9;m++)
mehrnaz 2:3de0589260d2 73 {
mehrnaz 2:3de0589260d2 74 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 75 sum+=myArray[m];
mehrnaz 2:3de0589260d2 76 }
mehrnaz 2:3de0589260d2 77 avg=sum/9;
mehrnaz 2:3de0589260d2 78 for(int m=0;m<9;m++)
mehrnaz 2:3de0589260d2 79 {
mehrnaz 2:3de0589260d2 80 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 81 difSum+=(myArray[m]-avg)*(myArray[m]-avg); //Find sum of difference between value X and mean
mehrnaz 2:3de0589260d2 82 }
mehrnaz 2:3de0589260d2 83 var=difSum/9;
mehrnaz 2:3de0589260d2 84 sigma=sqrt(var);
mehrnaz 2:3de0589260d2 85 if (sigma<0.02)
mehrnaz 2:3de0589260d2 86 {
mehrnaz 2:3de0589260d2 87 ttl.printf("sol didnt turn on\n");
mehrnaz 2:3de0589260d2 88 for(int m=0;m<8;m++)
mehrnaz 2:3de0589260d2 89 {
mehrnaz 2:3de0589260d2 90 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 91 myArray[m]=myArray[m+1]; //Shift all carbon to left by 1
mehrnaz 2:3de0589260d2 92 }
mehrnaz 2:3de0589260d2 93 myArray[8]=carbon();
mehrnaz 2:3de0589260d2 94 }else
mehrnaz 2:3de0589260d2 95 {
mehrnaz 2:3de0589260d2 96 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 97 ttl.printf("sol on\n");
mehrnaz 2:3de0589260d2 98 sol=1;
mehrnaz 2:3de0589260d2 99 flags=1;
mehrnaz 2:3de0589260d2 100 }
mehrnaz 2:3de0589260d2 101 }
mehrnaz 2:3de0589260d2 102 solend=1;
mehrnaz 2:3de0589260d2 103 solstart =1;
mehrnaz 2:3de0589260d2 104 }
mehrnaz 2:3de0589260d2 105 if ((measurement_started == 1) and (solend==1))
mehrnaz 2:3de0589260d2 106 {
mehrnaz 2:3de0589260d2 107 ttl.printf("ending...\n");
mehrnaz 2:3de0589260d2 108
mehrnaz 2:3de0589260d2 109 for(m=0;m<9;m++)
mehrnaz 2:3de0589260d2 110 {
mehrnaz 2:3de0589260d2 111 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 112 myArray[m]=carbon();
mehrnaz 2:3de0589260d2 113 }
mehrnaz 2:3de0589260d2 114 while(flage==0)
mehrnaz 2:3de0589260d2 115 {
mehrnaz 2:3de0589260d2 116 for(int m=0;m<9;m++)
mehrnaz 2:3de0589260d2 117 {
mehrnaz 2:3de0589260d2 118 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 119 sum2+=myArray[m];
mehrnaz 2:3de0589260d2 120 }
mehrnaz 2:3de0589260d2 121 avg2=sum2/9;
mehrnaz 2:3de0589260d2 122 for(int m=0;m<9;m++)
mehrnaz 2:3de0589260d2 123 {
mehrnaz 2:3de0589260d2 124 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 125 difSum2+=(myArray[m]-avg2)*(myArray[m]-avg2); //Find sum of difference between value X and mean
mehrnaz 2:3de0589260d2 126 }
mehrnaz 2:3de0589260d2 127 var2=difSum2/9;
mehrnaz 2:3de0589260d2 128 sigma2=sqrt(var2);
mehrnaz 2:3de0589260d2 129 if (sigma2<0.05)
mehrnaz 2:3de0589260d2 130 {
mehrnaz 2:3de0589260d2 131 ttl.printf("sol didnt turn on\n");
mehrnaz 2:3de0589260d2 132 for(int m=0;m<8;m++)
mehrnaz 2:3de0589260d2 133 {
mehrnaz 2:3de0589260d2 134 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 135 myArray[m]=myArray[m+1]; //Shift all carbon to left by 1
mehrnaz 2:3de0589260d2 136 }
mehrnaz 2:3de0589260d2 137 myArray[8]=carbon();
mehrnaz 2:3de0589260d2 138 }else
mehrnaz 2:3de0589260d2 139 {
mehrnaz 2:3de0589260d2 140 ttl.printf("Flow: %f, CO2: %d\n",flow(), carbon());
mehrnaz 2:3de0589260d2 141 ttl.printf("sol off\n");
mehrnaz 2:3de0589260d2 142 sol=0;
mehrnaz 2:3de0589260d2 143 flage=1;
mehrnaz 2:3de0589260d2 144 }
mehrnaz 2:3de0589260d2 145 }
mehrnaz 2:3de0589260d2 146 solend =0;
mehrnaz 2:3de0589260d2 147 bf=0;
mehrnaz 2:3de0589260d2 148 fin=1;
mehrnaz 2:3de0589260d2 149 }
mehrnaz 2:3de0589260d2 150 if((carbon()<10000) and (fin ==1))
mehrnaz 2:3de0589260d2 151 {
mehrnaz 2:3de0589260d2 152
mehrnaz 2:3de0589260d2 153 ttl.printf("ready\n");
mehrnaz 2:3de0589260d2 154 measurement_started =0;
mehrnaz 2:3de0589260d2 155 solstart=0;
mehrnaz 2:3de0589260d2 156 sum=0;
mehrnaz 2:3de0589260d2 157 var=0.0;
mehrnaz 2:3de0589260d2 158 sigma=0.0;
mehrnaz 2:3de0589260d2 159 difSum=0;
mehrnaz 2:3de0589260d2 160 sum2=0;
mehrnaz 2:3de0589260d2 161 var2=0.0;
mehrnaz 2:3de0589260d2 162 sigma2=0.0;
mehrnaz 2:3de0589260d2 163 difSum2=0;
mehrnaz 2:3de0589260d2 164 avg2=0;
mehrnaz 2:3de0589260d2 165 avg=0;
mehrnaz 2:3de0589260d2 166 flags=0;
mehrnaz 2:3de0589260d2 167 flage=0;
mehrnaz 2:3de0589260d2 168 fin=0;
mehrnaz 2:3de0589260d2 169 }
mehrnaz 2:3de0589260d2 170 }
mehrnaz 2:3de0589260d2 171 }