Sam Clarke / Mbed 2 deprecated Plan13

Dependencies:   GPS mbed

Committer:
SamClarke
Date:
Sun Jan 19 07:44:59 2014 +0000
Revision:
0:78d4704bd4e7
Child:
1:ab43ae956815
init

Who changed what in which revision?

UserRevisionLine numberNew contents of line
SamClarke 0:78d4704bd4e7 1 // Note!!!! This software is strictly beerware, send a beer
SamClarke 0:78d4704bd4e7 2 // to clarke.sam1@gmail.com via paypal if you use this code.
SamClarke 0:78d4704bd4e7 3
SamClarke 0:78d4704bd4e7 4
SamClarke 0:78d4704bd4e7 5 #include "Plan13.h"
SamClarke 0:78d4704bd4e7 6 #include "GPS.h"
SamClarke 0:78d4704bd4e7 7 #include "mbed.h"
SamClarke 0:78d4704bd4e7 8
SamClarke 0:78d4704bd4e7 9 #define ONEPPM 1.0e-6
SamClarke 0:78d4704bd4e7 10 #define ONEPPTM 1.0e-7
SamClarke 0:78d4704bd4e7 11
SamClarke 0:78d4704bd4e7 12 struct target{
SamClarke 0:78d4704bd4e7 13 int YEAR;
SamClarke 0:78d4704bd4e7 14 float EPOCH;
SamClarke 0:78d4704bd4e7 15 float INCLINATION;
SamClarke 0:78d4704bd4e7 16 float RAAN;
SamClarke 0:78d4704bd4e7 17 float ECCENTRICITY;
SamClarke 0:78d4704bd4e7 18 float ARGUMENT_PEDIGREE;
SamClarke 0:78d4704bd4e7 19 float MEAN_ANOMALY;
SamClarke 0:78d4704bd4e7 20 float MEAN_MOTION;
SamClarke 0:78d4704bd4e7 21 float TIME_MOTION_D;
SamClarke 0:78d4704bd4e7 22 float EPOCH_ORBIT;
SamClarke 0:78d4704bd4e7 23 float azimuth;
SamClarke 0:78d4704bd4e7 24 float elevation;
SamClarke 0:78d4704bd4e7 25 };
SamClarke 0:78d4704bd4e7 26
SamClarke 0:78d4704bd4e7 27 void target_tle(int yr, float epoch, float inc, float raan,
SamClarke 0:78d4704bd4e7 28 float ecc, float arg, float anom, float mmotion,
SamClarke 0:78d4704bd4e7 29 float tmotion, float epoch_orbit, struct target *t);
SamClarke 0:78d4704bd4e7 30
SamClarke 0:78d4704bd4e7 31 void calculate(Plan13& p, GPS& g, struct target *t);
SamClarke 0:78d4704bd4e7 32
SamClarke 0:78d4704bd4e7 33 Serial pc(USBTX, USBRX);
SamClarke 0:78d4704bd4e7 34 GPS gps(p9,p10);
SamClarke 0:78d4704bd4e7 35 Plan13 p;
SamClarke 0:78d4704bd4e7 36
SamClarke 0:78d4704bd4e7 37 int main()
SamClarke 0:78d4704bd4e7 38 {
SamClarke 0:78d4704bd4e7 39 // ASTRA 2F
SamClarke 0:78d4704bd4e7 40 //1 38778U 12051A 14010.00000000 .00000143 00000-0 00000+0 0 2381
SamClarke 0:78d4704bd4e7 41 //2 38778 000.0670 267.2510 0004011 341.2500 249.1500 01.00276604 4755
SamClarke 0:78d4704bd4e7 42 struct target ASTRA2F;
SamClarke 0:78d4704bd4e7 43 target_tle(2014, 10.00000000, 000.0670, 267.2510, 0,
SamClarke 0:78d4704bd4e7 44 341.2500, 249.1500, 1.0027660, 0.00000143, 4755, &ASTRA2F);
SamClarke 0:78d4704bd4e7 45 // NOAA 19
SamClarke 0:78d4704bd4e7 46 //1 33591U 09005A 14018.50690348 .00000100 00000-0 79451-4 0 929
SamClarke 0:78d4704bd4e7 47 //2 33591 098.9294 324.1290 0014157 178.0460 233.2637 14.11623746254876
SamClarke 0:78d4704bd4e7 48 struct target NOAA19;
SamClarke 0:78d4704bd4e7 49 target_tle(2014, 18.50690348, 98.9294, 324.1290, 79451,
SamClarke 0:78d4704bd4e7 50 178.0460, 233.2637, 14.1162376, 0.00000100, 25487, &NOAA19);
SamClarke 0:78d4704bd4e7 51 gps.Init();
SamClarke 0:78d4704bd4e7 52 pc.baud(115200);
SamClarke 0:78d4704bd4e7 53 while (1)
SamClarke 0:78d4704bd4e7 54 {
SamClarke 0:78d4704bd4e7 55 wait(1);
SamClarke 0:78d4704bd4e7 56 if(gps.parseData()) {
SamClarke 0:78d4704bd4e7 57 calculate(p, gps, &ASTRA2F);
SamClarke 0:78d4704bd4e7 58 pc.printf("GPS Position = %f, %f\n\n", gps.latitude, gps.longitude);
SamClarke 0:78d4704bd4e7 59 pc.printf("ASTRA2F Azimuth = %f\n", ASTRA2F.azimuth);
SamClarke 0:78d4704bd4e7 60 pc.printf("ASTRA2F Elevation = %f\n", ASTRA2F.elevation);
SamClarke 0:78d4704bd4e7 61 calculate(p, gps, &NOAA19);
SamClarke 0:78d4704bd4e7 62 pc.printf("NOAA19 Azimuth = %f\n", NOAA19.azimuth);
SamClarke 0:78d4704bd4e7 63 pc.printf("NOAA19 Elevation = %f\n\n", NOAA19.elevation);
SamClarke 0:78d4704bd4e7 64 }else {
SamClarke 0:78d4704bd4e7 65 pc.printf("Aquiring Satellites...\n");
SamClarke 0:78d4704bd4e7 66 }
SamClarke 0:78d4704bd4e7 67 }
SamClarke 0:78d4704bd4e7 68
SamClarke 0:78d4704bd4e7 69 }
SamClarke 0:78d4704bd4e7 70
SamClarke 0:78d4704bd4e7 71 void calculate(Plan13& p, GPS& g, struct target *t )
SamClarke 0:78d4704bd4e7 72 {
SamClarke 0:78d4704bd4e7 73 p.setTime(g.year,g.month,g.day,g.hours, g.minutes, g.seconds); //YMDHMS
SamClarke 0:78d4704bd4e7 74 p.setElements(t->YEAR,
SamClarke 0:78d4704bd4e7 75 t->EPOCH,
SamClarke 0:78d4704bd4e7 76 t->INCLINATION,
SamClarke 0:78d4704bd4e7 77 t->RAAN,
SamClarke 0:78d4704bd4e7 78 t->ECCENTRICITY*ONEPPTM,
SamClarke 0:78d4704bd4e7 79 t->ARGUMENT_PEDIGREE,
SamClarke 0:78d4704bd4e7 80 t->MEAN_ANOMALY,
SamClarke 0:78d4704bd4e7 81 t->MEAN_MOTION,
SamClarke 0:78d4704bd4e7 82 t->TIME_MOTION_D,
SamClarke 0:78d4704bd4e7 83 t->EPOCH_ORBIT+ONEPPM,
SamClarke 0:78d4704bd4e7 84 0);
SamClarke 0:78d4704bd4e7 85 p.setLocation(g.longitude,g.latitude,0);
SamClarke 0:78d4704bd4e7 86 p.calculate();
SamClarke 0:78d4704bd4e7 87 t->azimuth = p.AZ;
SamClarke 0:78d4704bd4e7 88 t->elevation = p.EL;
SamClarke 0:78d4704bd4e7 89 }
SamClarke 0:78d4704bd4e7 90
SamClarke 0:78d4704bd4e7 91 void target_tle(int yr, float epoch, float inc, float raan,
SamClarke 0:78d4704bd4e7 92 float ecc, float arg, float anom, float mmotion,
SamClarke 0:78d4704bd4e7 93 float tmotion, float epoch_orbit, struct target *t)
SamClarke 0:78d4704bd4e7 94 {
SamClarke 0:78d4704bd4e7 95 t->YEAR = yr;
SamClarke 0:78d4704bd4e7 96 t->EPOCH = epoch;
SamClarke 0:78d4704bd4e7 97 t->INCLINATION = inc;
SamClarke 0:78d4704bd4e7 98 t->RAAN = raan;
SamClarke 0:78d4704bd4e7 99 t->ECCENTRICITY = ecc;
SamClarke 0:78d4704bd4e7 100 t->ARGUMENT_PEDIGREE = arg;
SamClarke 0:78d4704bd4e7 101 t->MEAN_ANOMALY = anom;
SamClarke 0:78d4704bd4e7 102 t->MEAN_MOTION = mmotion;
SamClarke 0:78d4704bd4e7 103 t->TIME_MOTION_D = tmotion;
SamClarke 0:78d4704bd4e7 104 t->EPOCH_ORBIT = epoch_orbit;
SamClarke 0:78d4704bd4e7 105 }