2017年3月,伊豆大島共同打上実験 CORE_缶ロケチーム電装

Dependencies:   MPU6050 MS5607 mbed SDFileSystem

Committer:
mikawataru
Date:
Sat Feb 18 17:02:59 2017 +0000
Revision:
1:ec75f428c6b3
Parent:
0:10a9c9c5ce83
Child:
2:b6eb08d059cc
SD??20Hz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikawataru 0:10a9c9c5ce83 1 #include "mbed.h"
mikawataru 0:10a9c9c5ce83 2 #include "MS5607I2C.h"
mikawataru 0:10a9c9c5ce83 3 #include "MPU6050.h"
mikawataru 1:ec75f428c6b3 4 #include "SDFileSystem.h"
mikawataru 0:10a9c9c5ce83 5
mikawataru 1:ec75f428c6b3 6 #define RATE 20
mikawataru 0:10a9c9c5ce83 7
mikawataru 0:10a9c9c5ce83 8 MS5607I2C ms5607(p9, p10, false);
mikawataru 0:10a9c9c5ce83 9 MPU6050 mpu(p9,p10);
mikawataru 0:10a9c9c5ce83 10 DigitalIn sw(p21);
mikawataru 0:10a9c9c5ce83 11 DigitalOut myled(LED1);
mikawataru 0:10a9c9c5ce83 12 Serial pc(USBTX, USBRX);
mikawataru 1:ec75f428c6b3 13 SDFileSystem sd(p11, p12, p13, p14, "sd");
mikawataru 0:10a9c9c5ce83 14
mikawataru 1:ec75f428c6b3 15 Timer timer;
mikawataru 0:10a9c9c5ce83 16 Ticker loop_measure;
mikawataru 0:10a9c9c5ce83 17
mikawataru 0:10a9c9c5ce83 18 int8_t cnt = 0;
mikawataru 1:ec75f428c6b3 19 bool mode = 0;
mikawataru 1:ec75f428c6b3 20 float pressure[2][RATE],temperature[2][RATE];
mikawataru 1:ec75f428c6b3 21 float acc[2][RATE][3],gyro[2][RATE][3];
mikawataru 1:ec75f428c6b3 22 float t[2][RATE];
mikawataru 1:ec75f428c6b3 23 FILE *fp;
mikawataru 1:ec75f428c6b3 24
mikawataru 0:10a9c9c5ce83 25 void _Launch(){
mikawataru 0:10a9c9c5ce83 26 myled = 1;
mikawataru 0:10a9c9c5ce83 27 }
mikawataru 0:10a9c9c5ce83 28 void _measure(){
mikawataru 1:ec75f428c6b3 29 t[mode][cnt] = timer.read();
mikawataru 1:ec75f428c6b3 30 pressure[mode][cnt] = ms5607.getPressure();
mikawataru 1:ec75f428c6b3 31 temperature[mode][cnt] = ms5607.getTemperature();
mikawataru 1:ec75f428c6b3 32 mpu.getAccelero(&acc[mode][cnt][0]);
mikawataru 1:ec75f428c6b3 33 mpu.getGyro(&gyro[mode][cnt][0]);
mikawataru 0:10a9c9c5ce83 34 // pc.printf("%f,%f,%f\t",pressure[cnt],temperature[cnt], altitude[cnt]);
mikawataru 0:10a9c9c5ce83 35 // pc.printf("%f,%f,%f,%f,%f,%f\r\n",acc[cnt][0],acc[cnt][1],acc[cnt][2],gyro[cnt][0],gyro[cnt][1],gyro[cnt][2]);
mikawataru 1:ec75f428c6b3 36 fprintf(fp, "%f,%f,%f,%f,%f,%f,%f,%f,%f\r\n",
mikawataru 1:ec75f428c6b3 37 t[mode][cnt],pressure[mode][cnt],temperature[mode][cnt],acc[mode][cnt][0],
mikawataru 1:ec75f428c6b3 38 acc[mode][cnt][1],acc[mode][cnt][2],gyro[mode][cnt][0],gyro[mode][cnt][1],gyro[mode][cnt][2]
mikawataru 1:ec75f428c6b3 39 );
mikawataru 0:10a9c9c5ce83 40 cnt++;
mikawataru 1:ec75f428c6b3 41 if(cnt==RATE){
mikawataru 1:ec75f428c6b3 42 fclose(fp);
mikawataru 1:ec75f428c6b3 43 fp = fopen("/sd/sdtest.txt", "a");
mikawataru 1:ec75f428c6b3 44 mode =! mode;
mikawataru 1:ec75f428c6b3 45 cnt = 0;
mikawataru 1:ec75f428c6b3 46 }
mikawataru 0:10a9c9c5ce83 47 }
mikawataru 0:10a9c9c5ce83 48
mikawataru 0:10a9c9c5ce83 49 int main() {
mikawataru 1:ec75f428c6b3 50 timer.start();
mikawataru 1:ec75f428c6b3 51 fp = fopen("/sd/sdtest.txt", "w");
mikawataru 1:ec75f428c6b3 52 fprintf(fp, "pressure,temperature,ax,ay,az,gx,gy,gz\r\n");
mikawataru 0:10a9c9c5ce83 53 myled = 0;
mikawataru 1:ec75f428c6b3 54 loop_measure.attach(&_measure,1.0/RATE);
mikawataru 0:10a9c9c5ce83 55 while(1){
mikawataru 1:ec75f428c6b3 56 if(sw==0)_Launch();
mikawataru 0:10a9c9c5ce83 57 }
mikawataru 0:10a9c9c5ce83 58 }