移動系の統合試験用プログラムです。
Dependencies: mbed TB6612FNG HMC6352 getGPS
Function.h
- Committer:
- ushiroji
- Date:
- 2021-10-27
- Revision:
- 5:9f9cf3912fda
- Parent:
- 4:135619de1646
File content as of revision 5:9f9cf3912fda:
#include "mbed.h" #include "getGPS.h" #include "us015.h" #include "HMC6352.h" #include "Math.h" US015 hs(D2, D3); DigitalOut Ultra(D2); GPS gps(D1, D0); HMC6352 compass(D4, D5); Serial pc(USBTX, USBRX); double GPS_x, GPS_y; // 現在地の座標 double next_CP_x, next_CP_y; double CPs_x[100]; // = []; //CPリスト(x座標) double CPs_y[100]; // = []; // CPリスト(y座標) double *pGPS_x = &GPS_x, *pGPS_y = &GPS_y; double theta; double delta; int FrontGet() { Ultra = 1; //超音波on hs.TrigerOut(); wait(1); int distance; distance = hs.GetDistance(); pc.printf("distance=%d\r\n", distance); //距離出力 Ultra=0;//超音波off if(distance < 200) { return 1; } else { return 0; } } int catchGPS() { pc.printf("GPS Start\r\n"); /* 1秒ごとに現在地を取得してターミナル出力 */ while(1) { if(gps.getgps()) { //現在地取得 pc.printf("%lf %lf\r\n", gps.latitude, gps.longitude);//緯度と経度を出力 *pGPS_x = gps.latitude; *pGPS_y = gps.longitude; break; } else { pc.printf("No data\r\n");//データ取得に失敗した場合 wait(1); } } return 0; } double AngleGet() { double angle; compass.setOpMode(HMC6352_CONTINUOUS, 1, 20); angle = compass.sample() / 10; double next_x; double next_y; double theta; double delta; //if(gps.getgps()) { pc.printf("%f, %f\r\n", 0, 0); //gps.latitude=0, gps.longitude=0 next_x = 0; next_y = 100; theta = atan(next_x - 0 / next_y - 0) * 180 / M_PI; printf("theta=%f\r\n", theta); if(theta >= 0) { delta = angle - theta; } else { theta = theta + 360; delta = angle - theta; } printf("%f-%f=%f\r\n", angle, theta, delta); //} /* else { pc.printf("No data\r\n");//データ取得に失敗した場合 wait(1); } */ wait(2); return delta; } /* double angle; compass.setOpMode(HMC6352_CONTINUOUS, 1, 20); angle = compass.sample() / 10; if(gps.getgps()) { pc.printf("%lf %lf\r\n", gps.latitude, gps.longitude); next_CP_x = gps.latitude; next_CP_y = gps.longitude; theta = atan(next_CP_x - 0 / next_CP_y - 0) * 180 / M_PI; printf("%f", theta); delta = theta - angle; printf("%f-%f=%f\r\n", theta, angle, delta); return delta; } else { pc.printf("No data\r\n");//データ取得に失敗した場合 wait(1); } } */