cansat
Dependencies: SDFileSystem mbed
main.cpp@1:a2629e589080, 2016-02-29 (annotated)
- Committer:
- Nike3221
- Date:
- Mon Feb 29 14:31:01 2016 +0000
- Revision:
- 1:a2629e589080
- Parent:
- 0:649fc30be6ec
- Child:
- 2:db3e3ca8d1eb
cansat
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Nike3221 | 0:649fc30be6ec | 1 | #include "mbed.h" |
Nike3221 | 0:649fc30be6ec | 2 | #include "SDFileSystem.h" |
Nike3221 | 0:649fc30be6ec | 3 | |
Nike3221 | 0:649fc30be6ec | 4 | Ticker timer; |
Nike3221 | 0:649fc30be6ec | 5 | SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board |
Nike3221 | 0:649fc30be6ec | 6 | Serial gp(p28, p27); // tx, rx |
Nike3221 | 0:649fc30be6ec | 7 | Serial pc(USBTX, USBRX); // tx, rx |
Nike3221 | 1:a2629e589080 | 8 | PwmOut moter_l(p21);//左モーター |
Nike3221 | 1:a2629e589080 | 9 | PwmOut moter_r(p22);//右モーター |
Nike3221 | 0:649fc30be6ec | 10 | DigitalOut fet3(p23);//ニクロム線 |
Nike3221 | 0:649fc30be6ec | 11 | DigitalOut janpa1(p19);//パラシュートの開きを検知 |
Nike3221 | 0:649fc30be6ec | 12 | DigitalIn janpa2(p20);//パラシュートの開きを検知 |
Nike3221 | 1:a2629e589080 | 13 | int ido_gosa,kei_gosa; |
Nike3221 | 1:a2629e589080 | 14 | int ido_goal=1000; //緯度の目標値 秒以下を入力 要設定 |
Nike3221 | 1:a2629e589080 | 15 | int kei_goal=1000; //経度の目標値 秒以下を入力 要設定 |
Nike3221 | 1:a2629e589080 | 16 | int old_ido,old_kei; |
Nike3221 | 1:a2629e589080 | 17 | int ido,kei; |
Nike3221 | 1:a2629e589080 | 18 | char gpsc[500]; |
Nike3221 | 0:649fc30be6ec | 19 | int a,b,c,d; |
Nike3221 | 0:649fc30be6ec | 20 | int i=0; |
Nike3221 | 0:649fc30be6ec | 21 | |
Nike3221 | 1:a2629e589080 | 22 | void gps_kakiko() |
Nike3221 | 0:649fc30be6ec | 23 | { |
Nike3221 | 1:a2629e589080 | 24 | |
Nike3221 | 0:649fc30be6ec | 25 | mkdir("/sd/mydir", 0777); |
Nike3221 | 0:649fc30be6ec | 26 | FILE *fp = fopen("/sd/mydir/sdtest.txt", "a"); |
Nike3221 | 0:649fc30be6ec | 27 | if(fp == NULL) { |
Nike3221 | 0:649fc30be6ec | 28 | error("Could not open file for write\n"); |
Nike3221 | 0:649fc30be6ec | 29 | } |
Nike3221 | 1:a2629e589080 | 30 | |
Nike3221 | 0:649fc30be6ec | 31 | while(i!=50) |
Nike3221 | 1:a2629e589080 | 32 | { fputc(gp.getc(),fp);//sdに50文字づつ書き込み |
Nike3221 | 0:649fc30be6ec | 33 | i++; } |
Nike3221 | 0:649fc30be6ec | 34 | |
Nike3221 | 0:649fc30be6ec | 35 | fclose(fp); |
Nike3221 | 1:a2629e589080 | 36 | |
Nike3221 | 0:649fc30be6ec | 37 | } |
Nike3221 | 0:649fc30be6ec | 38 | |
Nike3221 | 0:649fc30be6ec | 39 | void nikuromu() |
Nike3221 | 0:649fc30be6ec | 40 | { |
Nike3221 | 1:a2629e589080 | 41 | fet3=1; |
Nike3221 | 0:649fc30be6ec | 42 | wait(60);//焼き切り時間 |
Nike3221 | 0:649fc30be6ec | 43 | } |
Nike3221 | 0:649fc30be6ec | 44 | |
Nike3221 | 0:649fc30be6ec | 45 | void moter() { |
Nike3221 | 1:a2629e589080 | 46 | |
Nike3221 | 1:a2629e589080 | 47 | while(ido_gosa <= 10 && ido_gosa <= 10) |
Nike3221 | 0:649fc30be6ec | 48 | { |
Nike3221 | 1:a2629e589080 | 49 | |
Nike3221 | 1:a2629e589080 | 50 | a=50; |
Nike3221 | 1:a2629e589080 | 51 | {gpsc[a]= gp.getc(); |
Nike3221 | 1:a2629e589080 | 52 | pc.printf("%c",gpsc[a]);//確認用 要削除 |
Nike3221 | 1:a2629e589080 | 53 | |
Nike3221 | 1:a2629e589080 | 54 | if(gpsc[a-34]=='A') |
Nike3221 | 1:a2629e589080 | 55 | {if(gpsc[a-33]=='G') |
Nike3221 | 1:a2629e589080 | 56 | {if(gpsc[a-32]=='G') |
Nike3221 | 1:a2629e589080 | 57 | { |
Nike3221 | 1:a2629e589080 | 58 | old_ido=ido; |
Nike3221 | 1:a2629e589080 | 59 | old_kei=kei; |
Nike3221 | 1:a2629e589080 | 60 | ido=gpsc[a-16]*1000+gpsc[a-15]*100+gpsc[a-14]*10+gpsc[a-13]; |
Nike3221 | 1:a2629e589080 | 61 | kei=gpsc[a-3]*1000+gpsc[a-2]*100+gpsc[a-1]*10+gpsc[a]; |
Nike3221 | 1:a2629e589080 | 62 | pc.printf("***%d***%d***",ido,kei);// 要削除 |
Nike3221 | 1:a2629e589080 | 63 | |
Nike3221 | 1:a2629e589080 | 64 | if(a>=50) |
Nike3221 | 1:a2629e589080 | 65 | {a=25;} |
Nike3221 | 1:a2629e589080 | 66 | }}} |
Nike3221 | 0:649fc30be6ec | 67 | |
Nike3221 | 1:a2629e589080 | 68 | moter_l.period(0.02); // 周期 |
Nike3221 | 1:a2629e589080 | 69 | moter_r.period(0.02); |
Nike3221 | 1:a2629e589080 | 70 | moter_l.pulsewidth(0.08); // servo position determined by a pulsewidth between 1-2ms |
Nike3221 | 1:a2629e589080 | 71 | moter_r.pulsewidth(0.08); //パルス幅 |
Nike3221 | 1:a2629e589080 | 72 | |
Nike3221 | 1:a2629e589080 | 73 | while(kei_gosa <=10 || ido_gosa <=10)//先ず経度or緯度をあわせる |
Nike3221 | 1:a2629e589080 | 74 | { moter_l.pulsewidth(0.10); |
Nike3221 | 1:a2629e589080 | 75 | moter_r.pulsewidth(0.08); |
Nike3221 | 1:a2629e589080 | 76 | wait(5); //方向転換90° 要設定 |
Nike3221 | 1:a2629e589080 | 77 | moter_l.pulsewidth(0.08); |
Nike3221 | 1:a2629e589080 | 78 | moter_r.pulsewidth(0.08); |
Nike3221 | 1:a2629e589080 | 79 | wait(10); //gpsの変化待ち |
Nike3221 | 1:a2629e589080 | 80 | |
Nike3221 | 1:a2629e589080 | 81 | if(kei_gosa >=10 || ido_gosa >=10) |
Nike3221 | 1:a2629e589080 | 82 | continue; // 方向転換をやりなおす |
Nike3221 | 1:a2629e589080 | 83 | } |
Nike3221 | 1:a2629e589080 | 84 | |
Nike3221 | 1:a2629e589080 | 85 | while(kei_gosa <=10 || ido_gosa <=10) |
Nike3221 | 1:a2629e589080 | 86 | { moter_l.pulsewidth(0.08); |
Nike3221 | 1:a2629e589080 | 87 | moter_r.pulsewidth(0.08); |
Nike3221 | 1:a2629e589080 | 88 | if(kei_gosa >=10 || ido_gosa >=10) |
Nike3221 | 1:a2629e589080 | 89 | continue; // 進み続ける |
Nike3221 | 1:a2629e589080 | 90 | } |
Nike3221 | 1:a2629e589080 | 91 | moter_l.pulsewidth(0.0); |
Nike3221 | 1:a2629e589080 | 92 | moter_r.pulsewidth(0.0); |
Nike3221 | 0:649fc30be6ec | 93 | |
Nike3221 | 0:649fc30be6ec | 94 | } |
Nike3221 | 1:a2629e589080 | 95 | }} |
Nike3221 | 0:649fc30be6ec | 96 | |
Nike3221 | 0:649fc30be6ec | 97 | int main() |
Nike3221 | 0:649fc30be6ec | 98 | { |
Nike3221 | 1:a2629e589080 | 99 | janpa1=1; |
Nike3221 | 1:a2629e589080 | 100 | if(janpa2==0){ |
Nike3221 | 0:649fc30be6ec | 101 | gp.baud(9600); |
Nike3221 | 1:a2629e589080 | 102 | timer.attach(&gps_kakiko, 2.0);//割り込み |
Nike3221 | 1:a2629e589080 | 103 | wait(60);//落下中 要設定 |
Nike3221 | 0:649fc30be6ec | 104 | nikuromu(); |
Nike3221 | 0:649fc30be6ec | 105 | moter(); |
Nike3221 | 1:a2629e589080 | 106 | } |
Nike3221 | 0:649fc30be6ec | 107 | return 0; |
Nike3221 | 0:649fc30be6ec | 108 | } |