cansat

Dependencies:   SDFileSystem mbed

Files at this revision

API Documentation at this revision

Comitter:
Nike3221
Date:
Wed Mar 02 10:19:53 2016 +0000
Parent:
4:840a96a81c08
Commit message:
cansat

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r 840a96a81c08 -r 85c3dff1be3f main.cpp
--- a/main.cpp	Mon Feb 29 15:07:08 2016 +0000
+++ b/main.cpp	Wed Mar 02 10:19:53 2016 +0000
@@ -2,7 +2,7 @@
 #include "SDFileSystem.h"
 
 Ticker timer;
-SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board
+//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);//左モーター
@@ -10,9 +10,10 @@
 DigitalOut fet3(p23);//ニクロム線
 DigitalOut janpa1(p19);//パラシュートの開きを検知
 DigitalIn janpa2(p20);//パラシュートの開きを検知
+DigitalOut led1(LED1);
 int ido_gosa,kei_gosa;
-int ido_goal=1000; //緯度の目標値 秒以下を入力 要設定
-int kei_goal=1000; //経度の目標値 秒以下を入力 要設定
+int ido_target=1000; //緯度の目標値 秒以下を入力 要設定
+int kei_target=1000; //経度の目標値 秒以下を入力 要設定
 int old_ido,old_kei;
 int ido,kei;
 char gpsc[500];
@@ -21,9 +22,10 @@
 
 void gps_kakiko()
 {
-
-    mkdir("/sd/mydir", 0777);
-    FILE *fp = fopen("/sd/mydir/sdtest.txt", "a");
+    led1=1;
+    i=0;
+    mkdir("/sd/gps", 0777);
+    FILE *fp = fopen("/sd/gps/gps.txt", "w");
     if(fp == NULL) {
         error("Could not open file for write\n");
         } 
@@ -33,19 +35,22 @@
        i++; }
     
     fclose(fp);
+    led1=0;
+
 
 }
 
 void nikuromu()
 {
+    led1=1;
     fet3=1;
     wait(60);//焼き切り時間
 }
 
 void moter()
 {
-    
-    while(ido_gosa >= 10 && ido_gosa >= 10)
+    ido_gosa = kei_gosa = 20;
+    while(ido_gosa >= 10 && kei_gosa >= 10)
     {
         
        a=50;
@@ -61,31 +66,32 @@
                    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];
-            
+                   ido_gosa = ido_target-ido;
+                   kei_gosa = kei_target-kei;
                    if(a>=50)
                     {a=25;}}}}    
     
        moter_l.period(0.02);      // 周期
        moter_r.period(0.02);          
-       moter_l.pulsewidth(0.08);  //パルス幅
-       moter_r.pulsewidth(0.08);
+       moter_l.pulsewidth(0.0020);  //パルス幅
+       moter_r.pulsewidth(0.0020);
     
-       while(kei_gosa >=10 || ido_gosa >=10)//先ず経度or緯度をあわせる
-         {    moter_l.pulsewidth(0.10);
-              moter_r.pulsewidth(0.08);
+       if(kei_gosa >=10 && ido_gosa >=10)//先ず経度or緯度をあわせる
+         {    moter_l.pulsewidth(0.0020);
+              moter_r.pulsewidth(0.0);
               wait(5); //方向転換90° 要設定
-              moter_l.pulsewidth(0.08);
-              moter_r.pulsewidth(0.08);
+              moter_l.pulsewidth(0.0020);
+              moter_r.pulsewidth(0.0020);
               wait(10); //gpsの変化待ち
            
-              if(kei_gosa >=10 || ido_gosa >=10)
+              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)
+       if(kei_gosa >=10 && ido_gosa <=10 || kei_gosa <=10 && ido_gosa >=10)
+         {    moter_l.pulsewidth(0.0020);
+              moter_r.pulsewidth(0.0020);
+              if(kei_gosa >=10 && ido_gosa <=10 || kei_gosa <=10 && ido_gosa >=10)
                 continue; // 進み続ける
          }
          
@@ -100,7 +106,7 @@
 {
     janpa1=1;
     gp.baud(9600);
-    timer.attach(&gps_kakiko, 2.0);//割り込み
+    //timer.attach(&gps_kakiko, 2.0);//割り込み
     if(janpa2==0)//パラシュートが開き、ジャンパピンが抜けたらスタート
     {
     wait(60);//落下中 要設定