lpc1768 aassssq
Dependencies: mbed Servo LPS25HB_I2C MPU6050 SDFileSystem
Diff: main.cpp
- Revision:
- 2:194e00108f75
- Parent:
- 0:bdbd3d6fc5d5
- Child:
- 3:14b178724982
diff -r e4d7342be507 -r 194e00108f75 main.cpp --- a/main.cpp Tue May 16 05:18:55 2017 +0000 +++ b/main.cpp Thu Feb 17 15:08:56 2022 +0000 @@ -1,19 +1,123 @@ #include "mbed.h" +#include "MPU6050.h" +#include "LPS.h" #include "SDFileSystem.h" - -SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board - + +I2C i2c(p28,p27); +LPS ps(i2c); +MPU6050 mpu(p9,p10); +SDFileSystem sd(p5, p6, p7, p8, "sd"); +Serial xbee(p13,p14); +Serial pc(USBTX,USBRX); + +int gyro[3]; +int accel[3]; + +double GX,GY,GZ; +double Tgx,Tgy,Tgz; + int main() { - printf("Hello World!\n"); - - mkdir("/sd/mydir", 0777); + xbee.printf("start\r\n"); + pc.printf("start\r\n"); + + GX = 0,GY = 0,GZ = 0; + Tgx = 0,Tgy = 0,Tgz = 0; + + if (!ps.init()){ + pc.printf("Failed to autodetect pressure sensor!\r\n"); + while (1); + } + + ps.enableDefault(); + + mkdir("/sd/test1", 0777); + FILE *fp = fopen("/sd/test1/sdtest1.txt", "w"); + + fprintf(fp,"start\r\n"); - FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); - if(fp == NULL) { + for(int k = 0; k < 50; k++){ + + if(fp == NULL) { error("Could not open file for write\n"); - } - fprintf(fp, "Hello fun SD Card World!"); - fclose(fp); - - printf("Goodbye World!\n"); -} + } + + mpu.readGyroData(gyro); + int gx = gyro[0]+146; + int gy = gyro[1]+232; //まだ + int gz = gyro[2]+7; + //printf("%d %d %d\r\n",gx,gy,gz); + + double gX = gx*0.02562; //0.0128114995(測定レンジ±500) + double gY = gy*0.02562; //0.02562299(±250) + double gZ = gz*0.02562; + + int gX1 = gX; + int gY1 = gY; + int gZ1 = gZ; + + double gX2 = gX1*0.01; + double gY2 = gY1*0.01; + double gZ2 = gZ1*0.01; + + GX = GX + gX2; + GY = GY + gY2; + GZ = GZ + gZ2; + + Tgx = Tgx + abs(gX2); + Tgy = Tgy + abs(gY2); + Tgz = Tgz + abs(gZ2); + + if(Tgx > 10){ + if(GX > 0){ + GX = GX - 0.3;//変更必須 + }else{ + GX = GX + 0.3; + } + Tgx = 0; + } + if(Tgy > 10){ + if(GY >0){ + GY = GY - 0.3; + }else{ + GY = GY + 0.3; + } + Tgy = 0; + } + if(Tgz > 10){ + if(GZ >0){ + GZ = GZ - 0.3; + }else{ + GZ = GZ + 0.3; + } + Tgz = 0; + } + + mpu.readAccelData(accel); + int ax = accel[0]-123;//x軸方向の加速度 + int ay = accel[1]+60;//y軸方向の加速度 + int az = accel[2]+1110 ;//z軸方向の加速度 + float AX = ax*0.000597964111328125; + float AY = ay*0.000597964111328125; + float AZ = az*0.000597964111328125; + double a = AX*AX+AY*AY+AZ*AZ-95.982071137936; + + float pres = ps.readPressureMillibars(); + float altit = ps.pressureToAltitudeMeters(pres); + float tempe = ps.readTemperatureC(); + + pc.printf("%.2f %.2f %.2f %.2f\r\n",AX,AY,AZ,a); + pc.printf("%.2f %.2f %.2f\r\n",GX,GY,GZ); + pc.printf("%.2f %.2f %.2f\r\n",pres,altit,tempe); + + xbee.printf("%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f\r\n",AX,AY,AZ,a,GX,GY,GZ,pres,altit,tempe); + fprintf(fp, "%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f\r\n",AX,AY,AZ,a,GX,GY,GZ,pres,altit,tempe); + wait(0.01); + } + + fprintf(fp,"end\r\n"); + fclose(fp); + xbee.printf("end\r\n"); + pc.printf("end\r\n"); + + return 0; +} \ No newline at end of file