a

Dependencies:   mbed Servo SRF02 LPS25HB_I2C MPU6050 SDFileSystem HEPTA_COM

Revision:
2:9bfc2984e322
Parent:
0:bdbd3d6fc5d5
Child:
3:10861141fce3
--- a/main.cpp	Tue May 16 05:18:55 2017 +0000
+++ b/main.cpp	Tue Nov 09 12:07:51 2021 +0000
@@ -1,19 +1,91 @@
+//コマンドなしver
+//コマンドだと反応しないため
+
 #include "mbed.h"
+//#include "SRF02.h"
 #include "SDFileSystem.h"
- 
-SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
- 
+#include "Servo.h"
+#include "MPU6050.h"
+#include "LPS.h"
+
+DigitalOut myleds[]={LED1,LED2,LED3,LED4};
+
+SDFileSystem sd(p5, p6, p7, p8, "sd"); //SDcard
+//SRF02 sensor(p9,p10,0xE0);           //距離センサ (使わない)
+Servo myservo(p21);                    //モーター
+Serial pc(USBTX,USBRX,9600);           //機体teraterm
+Serial xbee(p13,p14,9600);             //xbee
+MPU6050 mpu(p28,p27);                  //9軸
+I2C i2c(p28,p27);                     //気圧
+LPS ps(i2c);
+
+int accel[3];
+
+Timer t;
+
 int main() {
-    printf("Hello World!\n");   
- 
-    mkdir("/sd/mydir", 0777);
+    t.start();
+    xbee.printf("SDcard start\r\n");
+    pc.printf("SDcard start\r\n");
+    mkdir("/sd/mydir", 0777);  //filename
+    FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); //open
     
-    FILE *fp = fopen("/sd/mydir/sdtest.txt", "w");
-    if(fp == NULL) {
-        error("Could not open file for write\n");
-    }
-    fprintf(fp, "Hello fun SD Card World!");
-    fclose(fp); 
- 
-    printf("Goodbye World!\n");
-}
+    if (!ps.init()){
+        pc.printf("Failed to autodetect pressure sensor!\r\n");
+        while (1);
+        }
+        ps.enableDefault();
+        for(int num =0;num<1000;num++){         //回数(数値を変える必要ある)
+            myleds[1] = 1; 
+            wait(0.01);
+            L:     //移動場所
+            //気圧センサー(SDcardとteratermに表示する)
+            float pressure = ps.readPressureMillibars();
+            float altitude = ps.pressureToAltitudeMeters(pressure)-65;     //補正値必須
+            float temperature = ps.readTemperatureC();
+            //pc.printf("p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);
+            
+            //距離SRF02(表示しない)
+            //int d = sensor.getDistanceCm();
+            //pc.printf("Distance = %d cm\r\n",d);
+            //加速度MPU9250(表示する)
+            
+            mpu.readAccelData(accel);//加速度の値をaccel[3]に代入
+            int x = accel[0]-123;//x軸方向の加速度
+            int y = accel[1]+60;//y軸方向の加速度
+            int z = accel[2]+1110 ;//z軸方向の加速度
+            float X = x*0.000597964111328125;
+            float Y = y*0.000597964111328125;
+            float Z = z*0.000597964111328125;
+            double a = X*X+Y*Y+Z*Z-95.982071137936;
+            //pc.printf("%.2f %.2f %.2f %.2f\r\n",X,Y,Z,a);//速度と変位を表示
+            
+            
+            wait(0.01);
+            pc.printf("number %f t %0.4f p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C ax%.2f ay%.2f az%.2f |a| %.2f\r\n",num,t.read(),pressure,altitude,temperature,X,Y,Z,a);
+            xbee.printf("number %f t %0.4f p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C ax%.2f ay%.2f az%.2f |a| %.2f\r\n",num,t.read(),pressure,altitude,temperature,X,Y,Z,a);
+            
+            if( 15<altitude && altitude< 20){   //標高(数値変える必要あり)
+            pc.printf("motor");
+            xbee.printf("motor");
+            for(int motor =0; motor <100; motor++) {
+             myservo = motor/100.0;
+             wait(0.01);
+             goto L;        //Lに移動
+             }
+             }
+             myleds[1]=0;
+             wait(0.01);
+             if(fp == NULL) {  //データが無い場合
+             error("Could not open file for write\r\n");
+             }
+             //fprintf(fp, "distance %d",d);  //距離保存(保存しない)
+             //fprintf(fp,"%.2f %.2f %.2f %.2f\r\n",X,Y,Z,a); //加速度保存
+             //fprintf(fp,"p:%.2f\t mbar\ta:%.2f m\tt:%.2f deg C\r\n",pressure,altitude,temperature);  //気圧保存
+             fprintf(fp,"%f,%0.4f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,\r\n",num,t.read(),pressure,altitude,temperature,X,Y,Z,a);
+             }
+             fclose(fp);  //保存終了
+             xbee.printf("SDcard OK");
+             pc.printf("SDcard OK");
+             t.stop();
+             }
\ No newline at end of file