First draft

Dependencies:   MS5607 mbed

Committer:
rranisz1
Date:
Mon Feb 12 22:46:06 2018 +0000
Revision:
0:4d32261c32e5
v1.0.0; ; altimeter based flight computer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rranisz1 0:4d32261c32e5 1 #include "mbed.h"
rranisz1 0:4d32261c32e5 2 #include "MS5607I2C.h"
rranisz1 0:4d32261c32e5 3
rranisz1 0:4d32261c32e5 4 DigitalOut cutter[] = {(PD8), (PD13)};
rranisz1 0:4d32261c32e5 5
rranisz1 0:4d32261c32e5 6 int Alt0 ;
rranisz1 0:4d32261c32e5 7 int Alt1 ;
rranisz1 0:4d32261c32e5 8 MS5607I2C ms5607(PE0, PE1, false);
rranisz1 0:4d32261c32e5 9
rranisz1 0:4d32261c32e5 10
rranisz1 0:4d32261c32e5 11
rranisz1 0:4d32261c32e5 12 enum alt_States {Setup, Launchpad, Flight, Deployment};
rranisz1 0:4d32261c32e5 13 alt_States current = Setup;
rranisz1 0:4d32261c32e5 14
rranisz1 0:4d32261c32e5 15 float get_Avg()
rranisz1 0:4d32261c32e5 16 {
rranisz1 0:4d32261c32e5 17 float sum_a = 0.0;
rranisz1 0:4d32261c32e5 18 int iterations = 5;
rranisz1 0:4d32261c32e5 19 for(int i = 0; iterations<5; i++) {
rranisz1 0:4d32261c32e5 20 sum_a += ms5607.getAltitude();
rranisz1 0:4d32261c32e5 21 wait_ms(10);
rranisz1 0:4d32261c32e5 22 }
rranisz1 0:4d32261c32e5 23 return sum_a / iterations;
rranisz1 0:4d32261c32e5 24 }
rranisz1 0:4d32261c32e5 25
rranisz1 0:4d32261c32e5 26 int currAlt = get_Avg();
rranisz1 0:4d32261c32e5 27
rranisz1 0:4d32261c32e5 28
rranisz1 0:4d32261c32e5 29 int main()
rranisz1 0:4d32261c32e5 30 {
rranisz1 0:4d32261c32e5 31
rranisz1 0:4d32261c32e5 32 switch(current) {
rranisz1 0:4d32261c32e5 33 case Setup: {
rranisz1 0:4d32261c32e5 34
rranisz1 0:4d32261c32e5 35 wait(600);
rranisz1 0:4d32261c32e5 36 Alt0 = currAlt;
rranisz1 0:4d32261c32e5 37 current = Launchpad;
rranisz1 0:4d32261c32e5 38 }
rranisz1 0:4d32261c32e5 39 break;
rranisz1 0:4d32261c32e5 40
rranisz1 0:4d32261c32e5 41 case Launchpad: {
rranisz1 0:4d32261c32e5 42
rranisz1 0:4d32261c32e5 43 int Alt1 = currAlt;
rranisz1 0:4d32261c32e5 44 wait(5);
rranisz1 0:4d32261c32e5 45 if(Alt1 >> Alt0+100) {
rranisz1 0:4d32261c32e5 46 current = Flight;
rranisz1 0:4d32261c32e5 47 break;
rranisz1 0:4d32261c32e5 48 }
rranisz1 0:4d32261c32e5 49 Alt0 = Alt1;
rranisz1 0:4d32261c32e5 50 }
rranisz1 0:4d32261c32e5 51 break;
rranisz1 0:4d32261c32e5 52
rranisz1 0:4d32261c32e5 53 case Flight: {
rranisz1 0:4d32261c32e5 54 wait(1);
rranisz1 0:4d32261c32e5 55 if(currAlt << Alt1) {
rranisz1 0:4d32261c32e5 56 current = Deployment;
rranisz1 0:4d32261c32e5 57 break;
rranisz1 0:4d32261c32e5 58 }
rranisz1 0:4d32261c32e5 59 Alt1 = currAlt;
rranisz1 0:4d32261c32e5 60 }
rranisz1 0:4d32261c32e5 61 break;
rranisz1 0:4d32261c32e5 62
rranisz1 0:4d32261c32e5 63 case Deployment: {
rranisz1 0:4d32261c32e5 64 cutter[1] = 1;
rranisz1 0:4d32261c32e5 65 cutter[2] = 1;
rranisz1 0:4d32261c32e5 66 break;
rranisz1 0:4d32261c32e5 67 }
rranisz1 0:4d32261c32e5 68
rranisz1 0:4d32261c32e5 69
rranisz1 0:4d32261c32e5 70
rranisz1 0:4d32261c32e5 71
rranisz1 0:4d32261c32e5 72 }
rranisz1 0:4d32261c32e5 73 }
rranisz1 0:4d32261c32e5 74