東北大学学友会準加盟団体 From The Earth の高高度ロケットFTE-06(通称:海豚)にて使用したソフトウェアです.ご自由にお使いください.このプログラムによって生じた損害について当団体は一切責任を負いません.また,各モジュールのライブラリは当団体が作成したものではないので再配布は禁止します.

Dependencies:   mbed FATFileSystem

Fork of FTE-06 by Tetsushi Amano

Revision:
13:c3c7524d2440
Parent:
12:a26df6ca5585
Child:
14:b902e73a5404
--- a/main.cpp	Mon Jun 12 07:28:26 2017 +0000
+++ b/main.cpp	Thu Jun 22 10:47:01 2017 +0000
@@ -6,7 +6,10 @@
 #include "L3GD20.h"
 #include "LSM303DLHC.h"
 #include "24LCXXX.h"
+#include "GPS.h"
+#include "Servo.h"
 //発射検知でLED1の点灯、頂点通過検知でLED2の点灯、パラシュート展開でLED3の点灯、水密構造のLED4の点灯
+//im920ではECIOコマンドを使って、送信データのアスキーコード逆変換が行われるようにすること
 //-----------------------------------------ロケットの制御にかかわる設定
 #define launch_pressure_threshold 990.//発射したとみなす気圧(おおよそ地上気圧-80.4hpa)
 #define launch_acc_threshold 5.//発射時の加速度(G)
@@ -15,6 +18,8 @@
 #define size_dif 3//気圧の変位を保存する数
 #define time_limit_launch_and_fall_ms 20000//発射から頂点に至るまでの予測時間(msec)
 #define fall_detect_lock 2000//加速度で発射検知したときに頂点検知にロックをかける時間(msec)
+#define servo_deg_initial 20//サーボの初期角度
+#define servo_deg_close 90//サーボの水密構造を閉じる時の角度
 
 //-----------------------------------------センサの測定レンジなどの設定
 #define Acc_range 2.
@@ -40,6 +45,10 @@
 LSM303DLHC LSM(&L);//加速度センサのクラス
 I2C E(p9,p10);
 _24LCXXX eeprom(&E,AT24C1024_address);//eepromのクラス
+GPS sGPS(p28,p27);//GPSのクラス
+Serial Im920(p28,p27);//無線通信用のserialクラス
+Servo myservo(p21);//サーボ用のクラス
+int status=0;
 
 class Rocket_Data_Get_And_Save//ロケットの測定データを管理するクラス
 {
@@ -81,6 +90,7 @@
         longitude=0;
 
         //---------------------------
+        myservo.position(servo_deg_initial);//サーボ位置の初期化
         /*analogpinの入力電圧を用いてrandomなfile作成*/
         val = analog_rand.read();//p20の電圧読み取り
         seed = val * 10000;
@@ -147,14 +157,27 @@
     }
 
     void get_GPS() {//GPSデータの取得
-
-
+        if(sGPS.sample()) {
+            latitude=sGPS.latitude;
+            longitude=sGPS.longitude;
+        } else {
+            latitude=0;
+            longitude=0;
+        }
     }
 
-    void send_GPS() {//GPSデータの送信
+    void send_GPS_and_status() {//GPSデータの送信
+        char send_data[100];
+        sprintf(send_data,"TXDT %f,%f\n",latitude,longitude);
+        Im920.printf(send_data);
+        wait_ms(5);
+        sprintf(send_data,"TXDT %d\n",status);
+        Im920.printf(send_data);
+    }
 
-
-    }
+    void servo_move(){//サーボの動作に関する関数
+        myservo.position(servo_deg_close);
+        }
 
 };
 
@@ -324,6 +347,7 @@
     パラシュート展開完了後、水密構造を起動
     水密構造稼働ごLED4点灯
     */
+    rocket_data.servo_move();
     wait_ms(1000);
     myled4=1;
 }
@@ -332,10 +356,14 @@
 {
     t.start();
     SD_check();
+    status=1;
     uint32_t msg=Launch_detect();
+    status=2;
     fall_detect(msg);
+    status=3;
     para_open();
+    status=4;
     bottle_close();
-
+    status=5;
 
 }
\ No newline at end of file