cansat
Dependencies: SDFileSystem mbed
main.cpp
- Committer:
- Nike3221
- Date:
- 2016-02-29
- Revision:
- 3:6ea7473e7072
- Parent:
- 2:db3e3ca8d1eb
- Child:
- 4:840a96a81c08
File content as of revision 3:6ea7473e7072:
#include "mbed.h" #include "SDFileSystem.h" Ticker timer; SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board Serial gp(p28, p27); // tx, rx Serial pc(USBTX, USBRX); // tx, rx PwmOut moter_l(p21);//左モーター PwmOut moter_r(p22);//右モーター DigitalOut fet3(p23);//ニクロム線 DigitalOut janpa1(p19);//パラシュートの開きを検知 DigitalIn janpa2(p20);//パラシュートの開きを検知 int ido_gosa,kei_gosa; int ido_goal=1000; //緯度の目標値 秒以下を入力 要設定 int kei_goal=1000; //経度の目標値 秒以下を入力 要設定 int old_ido,old_kei; int ido,kei; char gpsc[500]; int a,b,c,d; int i=0; void gps_kakiko() { mkdir("/sd/mydir", 0777); FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); if(fp == NULL) { error("Could not open file for write\n"); } while(i!=50) { fputc(gp.getc(),fp);//sdに50文字づつ書き込み i++; } fclose(fp); } void nikuromu() { fet3=1; wait(60);//焼き切り時間 } void moter() { while(ido_gosa >= 10 && ido_gosa >= 10) { a=50; {gpsc[a]= gp.getc(); pc.printf("%c",gpsc[a]);//確認用 要削除 if(gpsc[a-34]=='A') {if(gpsc[a-33]=='G') {if(gpsc[a-32]=='G') { old_ido=ido; old_kei=kei; ido=gpsc[a-16]*1000+gpsc[a-15]*100+gpsc[a-14]*10+gpsc[a-13]; kei=gpsc[a-3]*1000+gpsc[a-2]*100+gpsc[a-1]*10+gpsc[a]; pc.printf("***%d***%d***",ido,kei);// 要削除 if(a>=50) {a=25;} }}} moter_l.period(0.02); // 周期 moter_r.period(0.02); moter_l.pulsewidth(0.08); // servo position determined by a pulsewidth between 1-2ms moter_r.pulsewidth(0.08); //パルス幅 while(kei_gosa >=10 || ido_gosa >=10)//先ず経度or緯度をあわせる { moter_l.pulsewidth(0.10); moter_r.pulsewidth(0.08); wait(5); //方向転換90° 要設定 moter_l.pulsewidth(0.08); moter_r.pulsewidth(0.08); wait(10); //gpsの変化待ち if(kei_gosa >=10 || ido_gosa >=10) continue; // 方向転換をやりなおす } while(kei_gosa >=10 || ido_gosa >=10) { moter_l.pulsewidth(0.08); moter_r.pulsewidth(0.08); if(kei_gosa >=10 || ido_gosa >=10) continue; // 進み続ける } moter_l.pulsewidth(0.0); moter_r.pulsewidth(0.0); } }} int main() { janpa1=1; gp.baud(9600); timer.attach(&gps_kakiko, 2.0);//割り込み if(janpa2==0){//パラシュートが開き、ジャンパピンが抜けたらスタート wait(60);//落下中 要設定 nikuromu(); moter(); } return 0; }