To do buzzer and send GPS data on serial using interrupt

Dependencies:   GPS mbed

Committer:
joon874
Date:
Fri Jul 31 03:13:07 2015 +0000
Revision:
0:94320e302b77
Send GPS data on UART to do buzzer alert using push switch

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:94320e302b77 1 /* Example showing how to hook up to different GPS modules (GlobalSat EM406a and Adafruit Ultimate GPSv3)
joon874 0:94320e302b77 2 * to emulated serial ports at different speeds */
joon874 0:94320e302b77 3 #include "mbed.h"
joon874 0:94320e302b77 4 #include "GPS.h"
joon874 0:94320e302b77 5
joon874 0:94320e302b77 6
joon874 0:94320e302b77 7 #ifdef TARGET_WIZwiki_W7500
joon874 0:94320e302b77 8 GPS gpsAda(D1, D0, 9600);
joon874 0:94320e302b77 9 #else
joon874 0:94320e302b77 10 GPS gpsAda(P0_12, P0_15, 9600);
joon874 0:94320e302b77 11 GPS gpsSpark(P0_4, P0_0, 4800);
joon874 0:94320e302b77 12 #endif
joon874 0:94320e302b77 13
joon874 0:94320e302b77 14 /* Private define ------------------------------------------------------------*/
joon874 0:94320e302b77 15 #define Do3 131 //C octave3
joon874 0:94320e302b77 16 #define Do3s 139 //C#
joon874 0:94320e302b77 17 #define Re3 147 //D
joon874 0:94320e302b77 18 #define Re3s 156//D#
joon874 0:94320e302b77 19 #define Mi3 165 //E
joon874 0:94320e302b77 20 #define Fa3 175 //F
joon874 0:94320e302b77 21 #define Fa3s 185 //F#
joon874 0:94320e302b77 22 #define So3 196 //G
joon874 0:94320e302b77 23 #define So3s 208 //G#
joon874 0:94320e302b77 24 #define La3 220 //A
joon874 0:94320e302b77 25 #define La3s 233 //A#
joon874 0:94320e302b77 26 #define Ti3 247 //B
joon874 0:94320e302b77 27 #define Do4 262 //C octave4
joon874 0:94320e302b77 28 #define Do4s 277 //C#
joon874 0:94320e302b77 29 #define Re4 294 //D
joon874 0:94320e302b77 30 #define Re4s 311//D#
joon874 0:94320e302b77 31 #define Mi4 330 //E
joon874 0:94320e302b77 32 #define Fa4 349 //F
joon874 0:94320e302b77 33 #define Fa4s 370 //F#
joon874 0:94320e302b77 34 #define So4 392 //G
joon874 0:94320e302b77 35 #define So4s 415 //G#
joon874 0:94320e302b77 36 #define La4 440 //A
joon874 0:94320e302b77 37 #define La4s 466 //A#
joon874 0:94320e302b77 38 #define Ti4 494 //B
joon874 0:94320e302b77 39 #define Do5 523 //C octave5
joon874 0:94320e302b77 40 #define Do5s 554 //C#
joon874 0:94320e302b77 41 #define Re5 587 //D
joon874 0:94320e302b77 42 #define Re5s 622//D#
joon874 0:94320e302b77 43 #define Mi5 659 //E
joon874 0:94320e302b77 44 #define Fa5 699 //F
joon874 0:94320e302b77 45 #define Fa5s 740 //F#
joon874 0:94320e302b77 46 #define So5 784 //G
joon874 0:94320e302b77 47 #define So5s 831 //G#
joon874 0:94320e302b77 48 #define La5 880 //A
joon874 0:94320e302b77 49 #define La5s 932 //A#
joon874 0:94320e302b77 50 #define Ti5 988 //B
joon874 0:94320e302b77 51
joon874 0:94320e302b77 52 /* Private variables ---------------------------------------------------------*/
joon874 0:94320e302b77 53
joon874 0:94320e302b77 54 Serial pc(USBTX, USBRX);
joon874 0:94320e302b77 55
joon874 0:94320e302b77 56 InterruptIn mysw(D7);
joon874 0:94320e302b77 57 DigitalOut myled1(LED1);
joon874 0:94320e302b77 58 DigitalOut myled2(LED2);
joon874 0:94320e302b77 59
joon874 0:94320e302b77 60 PwmOut Buzzer(D5);
joon874 0:94320e302b77 61
joon874 0:94320e302b77 62 float C_3 = 1000000/Do3,
joon874 0:94320e302b77 63 Cs_3 = 1000000/Do3s,
joon874 0:94320e302b77 64 D_3 = 1000000/Re3,
joon874 0:94320e302b77 65 Ds_3 = 1000000/Re3s,
joon874 0:94320e302b77 66 E_3 = 1000000/Mi3,
joon874 0:94320e302b77 67 F_3 = 1000000/Fa3,
joon874 0:94320e302b77 68 Fs_3 = 1000000/Fa3s,
joon874 0:94320e302b77 69 G_3 = 1000000/So3,
joon874 0:94320e302b77 70 Gs_3 = 1000000/So3s,
joon874 0:94320e302b77 71 A_3 = 1000000/La3,
joon874 0:94320e302b77 72 As_3 = 1000000/La3s,
joon874 0:94320e302b77 73 B_3 = 1000000/Ti3,
joon874 0:94320e302b77 74 C_4 = 1000000/Do4,
joon874 0:94320e302b77 75 Cs_4 = 1000000/Do4s,
joon874 0:94320e302b77 76 D_4 = 1000000/Re4,
joon874 0:94320e302b77 77 Ds_4 = 1000000/Re4s,
joon874 0:94320e302b77 78 E_4 = 1000000/Mi4,
joon874 0:94320e302b77 79 F_4 = 1000000/Fa4,
joon874 0:94320e302b77 80 Fs_4 = 1000000/Fa4s,
joon874 0:94320e302b77 81 G_4 = 1000000/So4,
joon874 0:94320e302b77 82 Gs_4 = 1000000/So4s,
joon874 0:94320e302b77 83 A_4 = 1000000/La4,
joon874 0:94320e302b77 84 As_4 = 1000000/La4s,
joon874 0:94320e302b77 85 B_4 = 1000000/Ti4,
joon874 0:94320e302b77 86 C_5 = 1000000/Do5,
joon874 0:94320e302b77 87 Cs_5 = 1000000/Do5s,
joon874 0:94320e302b77 88 D_5 = 1000000/Re5,
joon874 0:94320e302b77 89 Ds_5 = 1000000/Re5s,
joon874 0:94320e302b77 90 E_5 = 1000000/Mi5,
joon874 0:94320e302b77 91 F_5 = 1000000/Fa5,
joon874 0:94320e302b77 92 Fs_5 = 1000000/Fa5s,
joon874 0:94320e302b77 93 G_5 = 1000000/So5,
joon874 0:94320e302b77 94 Gs_5 = 1000000/So5s,
joon874 0:94320e302b77 95 A_5 = 1000000/La5,
joon874 0:94320e302b77 96 As_5 = 1000000/La5s,
joon874 0:94320e302b77 97 B_5 = 1000000/Ti5;
joon874 0:94320e302b77 98
joon874 0:94320e302b77 99 int tones[] = {G_3, D_3, G_3, D_3, G_3, D_3, 0};
joon874 0:94320e302b77 100 int tones_num = 8;
joon874 0:94320e302b77 101
joon874 0:94320e302b77 102 /* Private function prototypes -----------------------------------------------*/
joon874 0:94320e302b77 103 void Tune(PwmOut name, int period);
joon874 0:94320e302b77 104 void Auto_tunes(PwmOut name, int period);
joon874 0:94320e302b77 105 void Stop_tunes(PwmOut name);
joon874 0:94320e302b77 106
joon874 0:94320e302b77 107 void exin(){
joon874 0:94320e302b77 108
joon874 0:94320e302b77 109 int i;
joon874 0:94320e302b77 110 char ch[] = {"Alert!"};
joon874 0:94320e302b77 111
joon874 0:94320e302b77 112 #ifndef TARGET_WIZwiki_W7500
joon874 0:94320e302b77 113 if(gpsSpark.sample()) {
joon874 0:94320e302b77 114 pc.printf("set %s\t%f\t%f\t%f\t%f\t%f\n\r", ch1, gpsSpark.longitude, gpsSpark.latitude, gpsSpark.alt, gpsSpark.geoid, gpsSpark.time);
joon874 0:94320e302b77 115 }
joon874 0:94320e302b77 116 #endif
joon874 0:94320e302b77 117 if(gpsAda.sample()) {
joon874 0:94320e302b77 118 pc.printf("GPS %s \r\n longitude:%f \r\n latitude : %f \r\n", ch, gpsAda.longitude, gpsAda.latitude);
joon874 0:94320e302b77 119 pc.printf(" current time : %.0f\r\n",gpsAda.time-30000);
joon874 0:94320e302b77 120 pc.printf("\r\n\r\n");
joon874 0:94320e302b77 121 }
joon874 0:94320e302b77 122 myled2 = !myled2;
joon874 0:94320e302b77 123
joon874 0:94320e302b77 124 for(i=0; i<tones_num; i++)
joon874 0:94320e302b77 125 {
joon874 0:94320e302b77 126 Auto_tunes(Buzzer, tones[i]); // Auto performance
joon874 0:94320e302b77 127 Stop_tunes(Buzzer);
joon874 0:94320e302b77 128 }
joon874 0:94320e302b77 129
joon874 0:94320e302b77 130 }
joon874 0:94320e302b77 131
joon874 0:94320e302b77 132 int main() {
joon874 0:94320e302b77 133
joon874 0:94320e302b77 134 pc.printf("Run now...\r\n");
joon874 0:94320e302b77 135
joon874 0:94320e302b77 136 mysw.rise(&exin); // attach the address of the exin function to the rising edge
joon874 0:94320e302b77 137
joon874 0:94320e302b77 138 while(1) { // wait around, interrupts will interrupt this!
joon874 0:94320e302b77 139 myled1 = !myled1;
joon874 0:94320e302b77 140 wait(1.0);
joon874 0:94320e302b77 141 }
joon874 0:94320e302b77 142 }
joon874 0:94320e302b77 143
joon874 0:94320e302b77 144 /**
joon874 0:94320e302b77 145 * @brief Auto tunes Function
joon874 0:94320e302b77 146 */
joon874 0:94320e302b77 147 void Auto_tunes(PwmOut name, int period)
joon874 0:94320e302b77 148 {
joon874 0:94320e302b77 149 name.period_us(period);
joon874 0:94320e302b77 150 name.write(0.50f); // 50% duty cycle
joon874 0:94320e302b77 151 wait_ms(250); // 1/4 beat
joon874 0:94320e302b77 152 }
joon874 0:94320e302b77 153
joon874 0:94320e302b77 154 void Stop_tunes(PwmOut name)
joon874 0:94320e302b77 155 {
joon874 0:94320e302b77 156 name.period_us(0);
joon874 0:94320e302b77 157 }