Daisuke Yanagihara / Mbed 2 deprecated CLTP_Hepta_Project_A_noSWUART

Dependencies:   HEPTA_SENSOR mbed HEPTA_EPS HEPTA_COM HEPTA_CDH

Revision:
33:8a992b69fcd3
Parent:
32:c22cbcfb4635
--- a/main.cpp	Fri Aug 19 04:35:30 2022 +0000
+++ b/main.cpp	Tue Aug 30 02:39:39 2022 +0000
@@ -3,27 +3,73 @@
 #include "HEPTA_EPS.h"
 #include "HEPTA_SENSOR.h"
 #include "HEPTA_COM.h"
+
 HEPTA_CDH cdh(p5, p6, p7, p8, "sd");
 HEPTA_EPS eps(p16,p26);
 HEPTA_SENSOR sensor(p17,
                   p28,p27,0x19,0x69,0x13,
                   p13, p14,p25,p24);
 HEPTA_COM com(p9,p10);
+
 DigitalOut condition(LED1);
+DigitalOut LandLED1(p29);
+DigitalOut LandLED2(p30);
+DigitalOut LandLED3(p11);
+DigitalOut LandLED4(p12);
+
 Serial sat(USBTX,USBRX,9600);
 Timer sattime;
 int rcmd = 0,cmdflag = 0; //command variable
 
+DigitalOut debug2(LED2);
+DigitalOut debug3(LED3);
+DigitalOut debug4(LED4);
+
+int co2ppm = 0;
+
 int main() {
+    
+    debug2 = 1;
+    debug3 = 1;
+    debug4 = 1;
+    wait_ms(500);
+    debug2 = 0;
+    debug3 = 0;
+    debug4 = 0;
+    wait_ms(500);
+    debug2 = 1;
+    debug3 = 1;
+    debug4 = 1;
+    wait_ms(500);
+    debug2 = 0;
+    debug3 = 0;
+    debug4 = 0;
+    wait_ms(500);
+    debug2 = 1;
+    debug3 = 1;
+    debug4 = 1;
+    wait_ms(500);
+    debug2 = 0;
+    debug3 = 0;
+    debug4 = 0;
+    wait_ms(500);
+    
+    LandLED1 = 1;
+    LandLED2 = 1;
+    LandLED3 = 1;
+    LandLED4 = 1;
     sat.printf("From Sat : Nominal Operation\r\n");
     com.printf("From Sat : Nominal Operation\r\n");
     com.baud(9600);
     int flag = 0; //condition flag
     float batvol, temp; //voltage, temperature 
     int rcmd=0,cmdflag=0;  //command variable
+    float ax,ay,az;
+    float gx,gy,gz;
+    
     sattime.start();
     eps.turn_on_regulator();//turn on 3.3V conveter
-    for(int i = 0; i < 100; i++) {
+    while(1) {
         com.xbee_receive(&rcmd,&cmdflag);//interupting by ground station command
         
         //satellite condition led
@@ -36,7 +82,6 @@
         //Transmitting HK data to Ground Station(GS)
         com.printf("HEPTASAT::Condition = %d, Time = %f [s], batVol = %.2f [V],Temp = %.2f [C]\r\n",flag,sattime.read(),batvol,temp);
         wait_ms(1000);
-                
         //Power Saving Mode 
         if((batvol <= 3.5)  | (temp > 35.0)){
             eps.shut_down_regulator();
@@ -51,7 +96,7 @@
         if (cmdflag == 1) {
             if (rcmd == 'a') {
                 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
-                com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+                com.printf("Hepta-Sat Uplink Ok\r\n");
                 for(int j=0;j<5;j++){
                     com.printf("Hello World!\r\n");
                     condition = 1;
@@ -59,7 +104,7 @@
                 }
             }else if (rcmd == 'b') {
                 sat.printf("rcmd=%c,cmdflag=%d\r\n",rcmd,cmdflag);
-                com.printf("Hepta-Sat Lite Uplink Ok\r\n");
+                com.printf("Hepta-Sat Uplink Ok\r\n");
                 char str[100];
                 mkdir("/sd/mydir", 0777);
                 FILE *fp = fopen("/sd/mydir/satdata.txt","w");
@@ -81,13 +126,80 @@
                 fclose(fp);                
             }else if (rcmd == 'c') {        
                 //Please insert your answer
-
+                sat.printf("Command Get %d\r\n",rcmd);
+                com.printf("HEPTA Uplink OK\r\n");
+                sat.printf("===================\r\n");
+                sat.printf("Accel sensing Mode\r\n");
+                sat.printf("===================\r\n");
+                for(int ii = 0; ii < 10; ii++) {
+                    sensor.sen_acc(&ax,&ay,&az);
+                    com.printf("AX = %f\r\n",ax);
+                    com.printf("AY = %f\r\n",ay);
+                    com.printf("AZ = %f\r\n",az);
+                    wait(0.5);
+                }
             }else if (rcmd == 'd') {
-                //Please insert your answer
+                sat.printf("Command Get %d\r\n",rcmd);
+                com.printf("HEPTA Uplink OK\r\n");
+                sat.printf("===================\r\n");
+                sat.printf("Gyro sensing Mode\r\n");
+                sat.printf("===================\r\n");
+                for(int ii = 0; ii < 10; ii++) {
+                    sensor.sen_gyro(&gx,&gy,&gz);
+                    com.printf("GX = %f\r\n",gx);
+                    com.printf("GY = %f\r\n",gy);
+                    com.printf("GZ = %f\r\n",gz);
+                    wait(0.5);
+                }
 
             }else if (rcmd == 'e') {
-                //Please insert your answer
+                sat.printf("Command Get %d\r\n",rcmd);
+                com.printf("HEPTA Uplink OK\r\n");
+                sat.printf("===================\r\n");
+                sat.printf("CO2 sensing Mode\r\n");
+                sat.printf("===================\r\n");
+                
+                co2ppm = 42;
+                for(int ii = 0; ii < 10; ii++) {
+                    com.printf("CO2 = %d [ppm]\r\n",co2ppm);
+                    wait(0.5);
+                }
 
+            }else if (rcmd == 'f') {
+                sat.printf("Command Get %d\r\n",rcmd);
+                com.printf("HEPTA Uplink OK\r\n");
+                sat.printf("===================\r\n");
+                sat.printf("Landing sense Mode\r\n");
+                sat.printf("===================\r\n");
+                //Try do detect landing for 10 seconds
+                for(int j = 0; j< 20; j++){
+                    com.printf("Checking for landing!\r\n");
+                    sensor.sen_acc(&ax,&ay,&az);
+                    sensor.sen_gyro(&gx,&gy,&gz);
+                    //com.printf("Gravity^2 = %4f\r\n",(ax*ax)+(ay*ay)+(az*az));
+                    //com.printf("Gyros = %4f,%4f,%4f\r\n",gx,gy,gz);
+
+                    // Gyros < 0,1?
+                    if((gx<0.5)&&(gy<0.5)&&(gz<0.5)){
+                        // Gravity > 9.6 and < 10.0?
+                        if(( (ax*ax)+(ay*ay)+(az*az) ) > 92.16){
+                            if(((ax*ax)+(ay*ay)+(az*az) ) < 100.0){
+                                com.printf("Landing detected!\r\n");
+                                for(int i = 0; i < 10; i++){
+                                    //flash LEDS
+                                    LandLED1 = ! LandLED1;                
+                                    LandLED2 = ! LandLED2;                
+                                    LandLED3 = ! LandLED3;                
+                                    LandLED4 = ! LandLED4;                
+                                    wait_ms(500);
+                                    //put on sound
+                                    //TODO
+                                }
+                            }
+                        }
+                    }
+                    wait_ms(500);
+                }
             }
             com.initialize();
         }
@@ -96,3 +208,4 @@
     sat.printf("From Sat : End of operation\r\n");
     com.printf("From Sat : End of operation\r\n");
 }
+