hand held final version used for coolterm
Dependencies: mbed SoftSerial
main.cpp@2:3de0589260d2, 2019-07-12 (annotated)
- 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?
User | Revision | Line number | New 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 | } |