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 HMC6352 US015 TB6612FNG2 getGPS ATP3011
main.cpp
- Committer:
- user_
- Date:
- 2021-10-26
- Revision:
- 8:5fe1b4bbd108
- Parent:
- 7:8fab045d2616
- Child:
- 9:9221ef8d36a8
File content as of revision 8:5fe1b4bbd108:
// ライブラリ
#include "mbed.h"
#include "TB6612.h"
#include "ATP3011.h"
#include "HMC6352.h"
// 自作関数
#include "AngleGet.h"
#include "Avoid.h" // 廃止予定
#include "getGPS.h"
#include "catchGPS.h"
#include "FrontGet.h"
#include "MotorDriver.h"
// フライトピン・ニクロム線関係
Serial pc(SERIAL_TX, SERIAL_RX);
DigitalIn flight_pin(A0);
DigitalOut nichrome(D13);
//
int main() {
// 変数宣言
int CP_num; // CPリストのインデックス
int last_num; // CPリストの最後の要素のインデックス
double GPS_x, GPS_y; // 現在地の座標
double direction; // 次CPへの向き
double CPs_x[100]; // = []; //CPリスト(x座標)
double CPs_y[100]; // = []; // CPリスト(y座標)
double next_CP_x, next_CP_y;
// 落下検知
// パラシュート分離
wait(3);//電源ついてから3v3が安定するまで、秒数は適当、必要かもわからん
while(flight_pin){}
pc.printf("flight_pin nuketa");
wait(35);//ピン抜けてから地面につくまで70m/2.8(m/s)=25(s)余裕を見て+10s
nichrome=1;
pc.printf("nichrome in");
wait(30);
nichrome=0;
// 落下終了
// 行動フロー開始
last_num = sizeof(CPs_x) / sizeof(double) - 1; // ゴール地点のインデックスを算出
while (next_CP_x != CPs_x[last_num] && next_CP_y != CPs_y[last_num]) { // ゴール判定
int i;
for (i = CP_num; last_num; i++) {
// 移動
catchGPS(&GPS_x, &GPS_y);
AngleGet();
MotorDriver(4, 0.5); //回転
wait();
MotorDriver(1, 0); //回転停止
MotorDriver(2, 0.5); // 前進開始
while (True) {
if (FrontGet()) {
MotorDriver(1, 0); //停止
MotorDriver(4, 0.5); //回転
wait();
MotorDriver(1, 0); //回転停止
continue;
} else {
MotorDriver(2, 0.5);
}
catchGPS(&GPS_x, &GPS_y);
if ((next_CP_x - GPS_x)*(next_CP_x - GPS_x) + (next_CP_y = GPS_y)*(next_CP_y = GPS_y) < 5) { // CP到着判定 //試験で調整
break;
}
}
}
// 行動フロー終了
return 0;
}