Projet s5 - sensors lib

Dependencies:   XBeeLib mbed-rtos mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers EC.cpp Source File

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