kl25z accel dataloger
Dependencies: MMA8451Q MMA8491Q PCF8583_rtc SDFileSystem mbed
Fork of SDFileSystem_HelloWorld by
main.cpp
00001 00002 #include "mbed.h" 00003 //#include "TSISensor.h" 00004 #include "MMA8451Q.h" 00005 #include "MMA8491Q.h" 00006 //#include "MAG3110.h" 00007 //#include "MPL3115A2.h" 00008 #include <cstdlib> 00009 #include <iostream> 00010 00011 #include <stdint.h> 00012 #include "SDFileSystem.h" 00013 00014 00015 #include "PCF8583_rtc.h" 00016 00017 I2C i2c(PTE0, PTE1); // sda, scl 00018 PCF8583rtc rtc(&i2c, PCF8583_addr_2); 00019 SDFileSystem sd(PTD2, PTD3, PTD1, PTD5, "sd"); //PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name 00020 /* DI , DO ,SCK , CS 00021 MicroSD Breakout mbed 00022 CS o-------------o PTA13 (DigitalOut cs) 00023 DI o-------------o PTD2 (SPI mosi) 00024 VCC o-------------o VOUT 00025 SCK o-------------o PTD1 (SPI sclk) 00026 GND o-------------o GND 00027 DO o-------------o PTD3 (SPI miso) 00028 CD o 00029 */ 00030 00031 00032 Serial se(PTE22, PTE23); 00033 Serial pc(USBTX,USBRX); 00034 00035 MMA8451Q acc51(PTE25, PTE24, 0x1D<<1); 00036 MMA8491Q acc91(PTE0, PTE1, 0x55<<1); 00037 //MAG3110 mag(PTE0, PTE1, 0x0E<<1); 00038 //MPL3115A2 mpl(PTE0, PTE1, 0x60<<1); 00039 00040 Timer t; 00041 //PwmOut rled(LED_RED); 00042 00043 //DigitalOut rled(LED_RED); partilhado com sck não usar 00044 //DigitalOut bled(LED_BLUE); 00045 //DigitalOut gled(LED_GREEN); 00046 00047 //PwmOut gled(LED_GREEN); 00048 //PwmOut bled(LED_BLUE); 00049 00050 DigitalOut enMMA8491(PTC7); 00051 00052 DigitalOut memok (PTB0); // azul ok 00053 DigitalOut membad (PTB2); // vermelho 00054 DigitalOut ejeok (PTB1); //verde 00055 00056 DigitalIn detect (PTD4); 00057 00058 InterruptIn eject (PTD7); //ejectar cartão 00059 00060 InterruptIn intMPL3115(PTA4); 00061 InterruptIn intMAG3110(PTA5); 00062 00063 DigitalIn acc91X(PTC4); 00064 DigitalIn acc91Y(PTC3); 00065 DigitalIn acc91Z(PTC0); 00066 DigitalIn lock(PTB3); 00067 00068 int flagject = 0;//flag eject 00069 00070 char X_buffer [5]; 00071 00072 int set = 0; 00073 00074 int readSerialString () 00075 { 00076 00077 int x = 0; 00078 int aux=0; 00079 for(aux=0; aux<5; aux++) { 00080 X_buffer[aux]=0; 00081 } 00082 /*j=0; 00083 while(j<5) { 00084 X_buffer[j] = pc.getc(); 00085 j++; 00086 }*/ 00087 se.scanf("%s",&X_buffer[0]); 00088 x=atoi(X_buffer); 00089 return x; 00090 } 00091 00092 00093 void clockset() 00094 { 00095 /* wait (5); 00096 se.printf("clockset \n");*/ 00097 int hours=0; 00098 int mins=0; 00099 00100 int sec=0; 00101 int csec=0; 00102 00103 int day=0; 00104 int month=0; 00105 int year=0; 00106 00107 struct DateTime_t dt; 00108 //NVIC_DisableIRQ(UART2_IRQn); 00109 wait_ms (200); 00110 rtc.pauseCounting(); 00111 00112 se.printf("\nH?"); 00113 hours=readSerialString (); 00114 dt.time.hours = rtc.bin2bcd(hours); 00115 00116 se.printf("\nM?"); 00117 mins=readSerialString (); 00118 dt.time.minutes= rtc.bin2bcd(mins); 00119 00120 se.printf("\nS?"); 00121 sec=readSerialString (); 00122 dt.time.seconds = rtc.bin2bcd(sec); 00123 00124 se.printf("\nCS?"); 00125 csec=readSerialString (); 00126 dt.time.hundreds = rtc.bin2bcd(csec); 00127 00128 se.printf("\nDia?"); 00129 day=readSerialString (); 00130 dt.date.day = rtc.bin2bcd(day); 00131 00132 se.printf("\nMes?"); 00133 month=readSerialString (); 00134 dt.date.month = rtc.bin2bcd(month); 00135 00136 se.printf("\nAno?"); 00137 year=readSerialString (); 00138 dt.date.year=rtc.bin2bcd(year); 00139 00140 rtc.write(TIME, dt); 00141 00142 // rtc.enableCounting(); 00143 wait_ms(10); 00144 //NVIC_EnableIRQ(UART2_IRQn); 00145 se.printf("done"); 00146 se.printf("\n"); 00147 set=1; 00148 } 00149 00150 void flip () 00151 00152 { 00153 flagject =1; 00154 } 00155 00156 00157 00158 00159 int main() 00160 00161 { 00162 se.baud(9600); 00163 pc.baud(115200); 00164 00165 00166 memok=1; 00167 membad=1; 00168 ejeok = 1; 00169 00170 00171 struct DateTime_t dt; 00172 00173 if(lock==0&&set==0) { 00174 membad=0; 00175 wait (10); 00176 se.printf("clockset \n"); 00177 clockset(); 00178 membad=1; 00179 } 00180 00181 using namespace std; 00182 // mkdir("/sd/xxdir", 0777); 00183 00184 int hours=0; 00185 int mins=0; 00186 00187 int sec=0; 00188 int csec=0; 00189 int day=0; 00190 int month=0; 00191 int year=0; 00192 00193 char name[40]; 00194 00195 // char acele[110]; 00196 00197 float flag=0; 00198 00199 00200 // float onTime = 1.0; 00201 // float offTime = 0.0; 00202 float holdTime = 1; 00203 bool on = true; 00204 bool off = false; 00205 int magX = 0, magY = 0, magZ = 0; 00206 float mplAlt = .0, mplPres = .0, mplTemp = .0; 00207 // mpl.Altimeter_Mode(); 00208 00209 /* 00210 dt.time.hours = rtc.bin2bcd(23); 00211 dt.time.minutes = rtc.bin2bcd(59); 00212 dt.time.seconds = rtc.bin2bcd(50); 00213 dt.time.hundreds = rtc.bin2bcd(0); 00214 00215 dt.date.day = rtc.bin2bcd(30); 00216 dt.date.month = rtc.bin2bcd(6); 00217 // dt.date.year = rtc.bin2bcd(15); 00218 00219 //dt.date.year = rtc.bin2bcd(15); 00220 dt.date.year=rtc.bin2bcd(89); 00221 // dt.date.century= 99; 00222 rtc.write(TIME, dt); 00223 */ 00224 00225 00226 eject.fall(&flip); 00227 while(true) { 00228 dt = rtc.read(TIME); 00229 00230 hours= (((dt.time.hours & 0xF0) >> 4) * 10) + (dt.time.hours & 0x0F); 00231 mins= (((dt.time.minutes & 0xF0) >> 4) * 10) + (dt.time.minutes & 0x0F); 00232 sec= (((dt.time.seconds & 0xF0) >> 4) * 10) + (dt.time.seconds & 0x0F); 00233 csec= (((dt.time.hundreds & 0xF0) >> 4) * 10) + (dt.time.hundreds & 0x0F); 00234 00235 day= (((dt.date.day & 0xF0) >> 4) * 10) + (dt.date.day & 0x0F); 00236 month= (((dt.date.month & 0xF0) >> 4) * 10) + (dt.date.month & 0x0F); 00237 year= (((dt.date.year & 0xF0) >> 4) * 10) + (dt.date.year & 0x0F); 00238 00239 00240 // century= (((dt.date.century & 0xF0) >> 4) * 10) + (dt.date.century & 0x0F); 00241 // century= dt.date.century; 00242 00243 00244 // const char *filename = ("/sd/%d:%d:%d:%d:%d:%d.txt",hours,mins,sec,csec,day,month,year+100+1900); 00245 sprintf(name ,"/sd/%d-%d-%d-%d-%d-%d-%d.txt",hours,mins,sec,csec,day,month,year+100+1900); 00246 FILE *fp = fopen(name, "w"); 00247 if(fp == NULL) { 00248 error("Could not open file for write\n"); 00249 // gled = 1; 00250 membad=0; 00251 00252 } 00253 memok=0; 00254 // mplTemp = mpl.getTemperature(); 00255 // t.start(); 00256 00257 // while(flag<360000&& flagject!=1) { 00258 while(flag<360000) { 00259 //wait_ms(2.5); 00260 //if(t.read_ms ()==2.5) { 00261 enMMA8491 = on; 00262 00263 // sprintf(acele,"MMA8451: x:%f \ty: %f \tz:%f\t MMA8491: x:%f \ty: %f \tz:%f \n",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ(),acc91.getAccX(),acc91.getAccY(),acc91.getAccZ()); 00264 fprintf(fp,"MMA8451: x:%f \ty: %f \tz:%f\t ",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ()); 00265 fprintf(fp,"MMA8491: x:%f \ty: %f \tz:%f \n",acc91.getAccX(),acc91.getAccY(),acc91.getAccZ()); 00266 00267 // fprintf(fp,acele); 00268 00269 if(flagject ==1) { 00270 // mplTemp = mpl.getTemperature(); 00271 //fprintf(fp,"Temp:%f \n",mplTemp); 00272 fclose(fp); 00273 memok=1; 00274 ejeok = 0; 00275 while(1); 00276 } 00277 // t.reset(); 00278 flag++; 00279 enMMA8491 = off; 00280 // } 00281 } 00282 00283 00284 // t.stop(); 00285 // t.reset(); 00286 // fprintf(fp,"Temp:%f \n",mplTemp); 00287 /* 00288 if (flagject ==1) { 00289 fclose(fp); 00290 memok=1; 00291 ejeok = 0; 00292 while(1); 00293 }*/ 00294 00295 00296 00297 // fprintf(fp, "Hello fun SD Card World!"); 00298 fclose(fp); 00299 flag=0; 00300 /* printf("%s\n",name); 00301 se.printf("%d:%d:%d:%d\n",hours,mins,sec,csec); 00302 printf("%d/%d////%d\n",day,month,year+100+1900); 00303 // printf("%d/%d////%d\n",day,month,century); 00304 00305 00306 //enMMA8491 = off; 00307 00308 // mpl.Altimeter_Mode(); 00309 00310 enMMA8491 = on; 00311 00312 00313 mag.getValues(&magX, &magY, &magZ); 00314 mplAlt = mpl.getAltimeter(); 00315 mplTemp = mpl.getTemperature(); 00316 00317 cout << "MMA8451: x:" << acc51.getAccX() << "\ty:" << acc51.getAccY() << "\tz:" << acc51.getAccZ() << "\n\r" << endl; 00318 se.printf("MMA8451: x:%f \ty: %f \tz:%f \n",acc51.getAccX(),acc51.getAccY(),acc51.getAccZ()); 00319 cout << "MMA8491: " << acc91X << "\t" << acc91Y << "\t" << acc91Z << "\n\r" << endl; 00320 cout << "MMA8491: x:" << acc91.getAccX() << "\ty:" << acc91.getAccY() << "\tz:" << acc91.getAccZ() << "\n\r" << endl; 00321 cout << "MAG3110: " << magX << "\t" << magY << "\t" << magZ << "\n\r" << endl; 00322 mpl.Barometric_Mode(); 00323 wait(holdTime); 00324 00325 enMMA8491 = off; 00326 00327 00328 00329 mplPres = mpl.getPressure(); 00330 00331 //cout << "Touch: " << tsi.readPercentage() << "\n\r" << endl; 00332 cout << "MPL3115: " << mplAlt << "\t" << mplPres << "\t" << mplTemp << "\n\r" << endl; 00333 mpl.Altimeter_Mode(); 00334 wait(holdTime);*/ 00335 00336 00337 } 00338 return 0; 00339 }
Generated on Thu Jul 21 2022 23:51:14 by 1.7.2