Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed Servo LPS25HB_I2C MPU6050 SDFileSystem
Diff: main.cpp
- Revision:
- 2:194e00108f75
- Parent:
- 0:bdbd3d6fc5d5
- Child:
- 3:14b178724982
--- 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