Projet s5 - sensors lib
Dependencies: XBeeLib mbed-rtos mbed
EC.cpp
00001 #include "EC.h" 00002 00003 static I2C EC(p28,p27); // SDA / SCL 00004 static Serial pc(USBTX,USBRX); 00005 00006 static DigitalOut led1(LED1); 00007 static DigitalOut led2(LED2); 00008 static DigitalOut led3(LED3); 00009 static DigitalOut led4(LED4); 00010 00011 char buf[DEFAULT_BUFFER_SIZE]; 00012 char fBuf[DEFAULT_BUFFER_SIZE]; 00013 00014 void init_EC(){ 00015 EC.frequency(MAX_I2C_CLOCK); 00016 clearFBuffer_EC(); 00017 clearBuffer_EC(); 00018 } 00019 00020 void setAdresse_EC(uint8_t addresse ){ 00021 EC.start(); 00022 EC.write(EC_ADRESSE<<1); 00023 EC.write('I'); 00024 EC.write('2'); 00025 EC.write('C'); 00026 EC.write(','); 00027 EC.write(addresse); 00028 EC.stop(); 00029 } 00030 00031 void calibrate_EC(){ // Executes Dry Calibrate of the EC AC 00032 00033 char buf[10]; 00034 00035 EC.start(); 00036 EC.write(EC_ADRESSE<<1); 00037 EC.write('C'); 00038 EC.write('a'); 00039 EC.write('l'); 00040 EC.write(','); 00041 EC.write('c'); 00042 EC.write('l'); 00043 EC.write('e'); 00044 EC.write('a'); 00045 EC.write('r'); 00046 EC.stop(); 00047 00048 wait_ms(300); 00049 00050 pc.printf("EC sensor calibration cleared\n"); 00051 pc.printf("Press any key to start dry calibration - make sure the probe is completely dry...\n"); 00052 pc.getc(); 00053 pc.printf("Dry calibration started..\n"); 00054 00055 EC.start(); 00056 EC.write(EC_ADRESSE<<1); 00057 EC.write('C'); 00058 EC.write('a'); 00059 EC.write('l'); 00060 EC.write(','); 00061 EC.write('d'); 00062 EC.write('r'); 00063 EC.write('y'); 00064 EC.stop(); 00065 00066 wait_ms(2000); 00067 00068 pc.printf("EC sensor dry calibration completed\n"); 00069 pc.printf("Press any key to start one point calibration - make sure the probe is in 700 uS calibration solution...\n"); 00070 pc.getc(); 00071 00072 pc.printf("One point calibration starting...\n"); 00073 00074 EC.start(); 00075 EC.write(EC_ADRESSE<<1); 00076 EC.write('C'); 00077 EC.write('a'); 00078 EC.write('l'); 00079 EC.write(','); 00080 EC.write('o'); 00081 EC.write('n'); 00082 EC.write('e'); 00083 EC.write(','); 00084 EC.write('7'); 00085 EC.write('0'); 00086 EC.write('0'); 00087 EC.stop(); 00088 00089 pc.printf("One point calibration completed\n"); 00090 00091 wait_ms(1300); 00092 00093 getCalibrationStatus_EC(); 00094 } 00095 00096 void getCalibrationStatus_EC(){ 00097 EC.start(); 00098 EC.write(EC_ADRESSE<<1); 00099 EC.write('C'); 00100 EC.write('a'); 00101 EC.write('l'); 00102 EC.write(','); 00103 EC.write('?'); 00104 EC.stop(); 00105 00106 wait_ms(300); 00107 EC.write(0x00); 00108 EC.read(EC_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE); 00109 00110 for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){ 00111 pc.putc(buf[i]); 00112 } 00113 pc.putc('\n'); 00114 } 00115 00116 void setProbeType_EC(){ 00117 EC.start(); 00118 EC.write(EC_ADRESSE<<1); 00119 EC.write('K'); 00120 EC.write(','); 00121 EC.write('0'); 00122 EC.write('.'); 00123 EC.write('1'); 00124 EC.stop(); 00125 } 00126 00127 void getProbeType_EC(){ 00128 EC.start(); 00129 EC.write(EC_ADRESSE<<1); 00130 EC.write('K'); 00131 EC.write(','); 00132 EC.write('?'); 00133 EC.stop(); 00134 00135 wait_ms(600); 00136 EC.write(0x00); 00137 EC.read(EC_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE); 00138 00139 for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){ 00140 pc.putc(buf[i]); 00141 } 00142 pc.putc('\n'); 00143 } 00144 00145 void find_EC(){ 00146 EC.start(); 00147 EC.write(EC_ADRESSE<<1); 00148 EC.write('F'); 00149 EC.write('i'); 00150 EC.write('n'); 00151 EC.write('d'); 00152 EC.stop(); 00153 } 00154 00155 void status_EC(){ 00156 char buf[15]; 00157 EC.start(); 00158 EC.write(EC_ADRESSE<<1); 00159 EC.write('S'); 00160 EC.write('t'); 00161 EC.write('a'); 00162 EC.write('t'); 00163 EC.write('u'); 00164 EC.write('s'); 00165 EC.stop(); 00166 00167 wait_ms(300); 00168 EC.write(0x00); 00169 EC.read(EC_ADRESSE<<1,buf,15); 00170 00171 for(int i=0;i<15;i++){ 00172 pc.putc(buf[i]); 00173 } 00174 pc.putc('\n'); 00175 } 00176 00177 void sleep_EC(){ 00178 EC.start(); 00179 EC.write(EC_ADRESSE<<1); 00180 EC.write('S'); 00181 EC.write('l'); 00182 EC.write('e'); 00183 EC.write('e'); 00184 EC.write('p'); 00185 EC.stop(); 00186 } 00187 00188 void getInfo_EC(){ 00189 EC.start(); 00190 EC.write(EC_ADRESSE<<1); 00191 EC.write('i'); 00192 EC.stop(); 00193 00194 wait_ms(300); 00195 EC.write(0x00); 00196 EC.read(EC_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE); 00197 00198 int i=0; 00199 while(buf[i]!=0){ 00200 pc.putc(buf[i]); 00201 i++; 00202 } 00203 pc.putc('\n'); 00204 } 00205 00206 void read_EC(){ 00207 EC.start(); 00208 EC.write(EC_ADRESSE<<1); 00209 EC.write('R'); 00210 EC.stop(); 00211 00212 wait_ms(600); 00213 EC.write(0x00); 00214 EC.read(EC_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE); 00215 /* 00216 for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){ 00217 fBuf[i]=buf[i]; 00218 wait_ms(100); 00219 } 00220 */ 00221 int i=0; 00222 while(buf[i]!=0){ 00223 pc.putc(buf[i]); 00224 i++; 00225 } 00226 pc.putc('\n'); 00227 clearBuffer_EC(); 00228 } 00229 00230 void read_EC(char * buffer){ 00231 EC.start(); 00232 EC.write(EC_ADRESSE<<1); 00233 EC.write('R'); 00234 EC.stop(); 00235 00236 wait_ms(600); 00237 EC.write(0x00); 00238 EC.read(EC_ADRESSE<<1,buffer,DEFAULT_BUFFER_SIZE); 00239 } 00240 00241 float getEC(){ 00242 00243 char bufTmp[DEFAULT_BUFFER_SIZE]; 00244 00245 EC.start(); 00246 EC.write(EC_ADRESSE<<1); 00247 EC.write('R'); 00248 EC.stop(); 00249 00250 wait_ms(600); 00251 EC.write(0x00); 00252 EC.read(EC_ADRESSE<<1,bufTmp,DEFAULT_BUFFER_SIZE); 00253 00254 return atof(bufTmp+1); 00255 } 00256 00257 float getTDS(){ 00258 00259 float res=0,tmp=0; 00260 00261 if(fBuf[0]!=0){ 00262 int i=0; 00263 do{ 00264 i++; 00265 }while(fBuf[i]!=','); 00266 pc.printf("i:%i\n",i); 00267 for(int j=1;j<i;j++){ 00268 tmp=0; 00269 tmp=((fBuf[j] - 48)); 00270 00271 for(int k=0;k<(i-j-1);k++){ 00272 tmp*=10; 00273 } 00274 res+=tmp; 00275 wait_ms(100); 00276 } 00277 wait_ms(1000); 00278 } 00279 return res; 00280 } 00281 00282 void clearBuffer_EC(){ 00283 for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){ 00284 buf[i]=0; 00285 } 00286 } 00287 00288 void clearFBuffer_EC(){ 00289 for(int i=0;i<DEFAULT_BUFFER_SIZE;i++){ 00290 fBuf[i]=0; 00291 } 00292 } 00293 00294 void parameterToECOnly(){ 00295 EC.start(); 00296 EC.write(EC_ADRESSE<<1); 00297 EC.write('O'); 00298 EC.write(','); 00299 EC.write('E'); 00300 EC.write('C'); 00301 EC.write(','); 00302 EC.write('1'); 00303 EC.stop(); 00304 wait_ms(500); 00305 00306 EC.start(); 00307 EC.write(EC_ADRESSE<<1); 00308 EC.write('O'); 00309 EC.write(','); 00310 EC.write('T'); 00311 EC.write('D'); 00312 EC.write('S'); 00313 EC.write(','); 00314 EC.write('0'); 00315 EC.stop(); 00316 wait_ms(500); 00317 00318 EC.start(); 00319 EC.write(EC_ADRESSE<<1); 00320 EC.write('O'); 00321 EC.write(','); 00322 EC.write('S'); 00323 EC.write(','); 00324 EC.write('0'); 00325 EC.stop(); 00326 wait_ms(500); 00327 00328 EC.start(); 00329 EC.write(EC_ADRESSE<<1); 00330 EC.write('O'); 00331 EC.write(','); 00332 EC.write('S'); 00333 EC.write('G'); 00334 EC.write(','); 00335 EC.write('0'); 00336 EC.stop(); 00337 wait_ms(500); 00338 00339 EC.start(); 00340 EC.write(EC_ADRESSE<<1); 00341 EC.write('O'); 00342 EC.write(','); 00343 EC.write('?'); 00344 EC.write('\r'); 00345 EC.stop(); 00346 wait_ms(500); 00347 00348 EC.write(0x00); 00349 EC.read(EC_ADRESSE<<1,buf,DEFAULT_BUFFER_SIZE); 00350 00351 int i=0; 00352 while(buf[i]!=0){ 00353 pc.putc(buf[i]); 00354 i++; 00355 } 00356 pc.putc('\n'); 00357 clearBuffer_EC(); 00358 } 00359 00360 void FactorySettings_EC(){ 00361 EC.start(); 00362 EC.write(EC_ADRESSE<<1); 00363 EC.write('F'); 00364 EC.write('a'); 00365 EC.write('c'); 00366 EC.write('t'); 00367 EC.write('o'); 00368 EC.write('r'); 00369 EC.write('y'); 00370 EC.stop(); 00371 00372 wait_ms(1000); 00373 } 00374
Generated on Wed Jul 20 2022 22:26:41 by
1.7.2
