GPS and IMU reading works

Dependencies:   mbed Servo SDFileSystem

/media/uploads/taoqiuyang/img_2352.jpg

Committer:
taoqiuyang
Date:
Sat Aug 22 23:55:32 2015 +0000
Revision:
7:e59de63ed8da
Parent:
6:88209696ed0c
Child:
8:1f5a44bade4d
GPS and IMU reading

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taoqiuyang 0:f4d390c06705 1 #include "mbed.h"
taoqiuyang 3:ab9f94d112c0 2 #include <string>
taoqiuyang 3:ab9f94d112c0 3
taoqiuyang 7:e59de63ed8da 4 //LED indicators
taoqiuyang 2:afb333543af5 5 DigitalOut led1(LED1);
taoqiuyang 2:afb333543af5 6 DigitalOut led2(LED2);
taoqiuyang 5:451b8203ef99 7 DigitalOut led3(LED3);
taoqiuyang 2:afb333543af5 8
taoqiuyang 2:afb333543af5 9 Serial pc(USBTX, USBRX);
taoqiuyang 2:afb333543af5 10 Serial IMU(p28, p27); // tx, rx
taoqiuyang 5:451b8203ef99 11 Serial GPS(p13, p14); // tx, rx
taoqiuyang 2:afb333543af5 12
taoqiuyang 2:afb333543af5 13 char IMU_message[256];
taoqiuyang 3:ab9f94d112c0 14 int IMU_message_counter=0;
taoqiuyang 5:451b8203ef99 15 char GPS_message[256];
taoqiuyang 5:451b8203ef99 16 int GPS_message_counter=0;
taoqiuyang 2:afb333543af5 17
taoqiuyang 4:37d118f2348c 18 void IMU_serial_ISR() {
taoqiuyang 3:ab9f94d112c0 19 char buf;
taoqiuyang 3:ab9f94d112c0 20
taoqiuyang 3:ab9f94d112c0 21 while (IMU.readable()) {
taoqiuyang 3:ab9f94d112c0 22 buf = IMU.getc();
taoqiuyang 3:ab9f94d112c0 23
taoqiuyang 3:ab9f94d112c0 24 IMU_message_counter+=1;
taoqiuyang 3:ab9f94d112c0 25 IMU_message[IMU_message_counter]=buf;
taoqiuyang 3:ab9f94d112c0 26
taoqiuyang 3:ab9f94d112c0 27 if (buf=='#'){
taoqiuyang 3:ab9f94d112c0 28 IMU_message_counter=0;
taoqiuyang 3:ab9f94d112c0 29 }
taoqiuyang 3:ab9f94d112c0 30
taoqiuyang 3:ab9f94d112c0 31 if (buf=='\n'){
taoqiuyang 3:ab9f94d112c0 32 int i;
taoqiuyang 3:ab9f94d112c0 33 for(i=0;i<=IMU_message_counter;i++){
taoqiuyang 6:88209696ed0c 34 pc.putc(IMU_message[i]);
taoqiuyang 3:ab9f94d112c0 35 }
taoqiuyang 3:ab9f94d112c0 36 }
taoqiuyang 3:ab9f94d112c0 37 }
taoqiuyang 2:afb333543af5 38 led2 = !led2;
taoqiuyang 2:afb333543af5 39 }
taoqiuyang 0:f4d390c06705 40
taoqiuyang 5:451b8203ef99 41 void GPS_serial_ISR() {
taoqiuyang 5:451b8203ef99 42 char buf;
taoqiuyang 5:451b8203ef99 43
taoqiuyang 5:451b8203ef99 44 while (GPS.readable()) {
taoqiuyang 5:451b8203ef99 45 buf = GPS.getc();
taoqiuyang 5:451b8203ef99 46 //pc.putc(buf);
taoqiuyang 5:451b8203ef99 47 }
taoqiuyang 5:451b8203ef99 48
taoqiuyang 5:451b8203ef99 49 led3 = !led3;
taoqiuyang 5:451b8203ef99 50 }
taoqiuyang 3:ab9f94d112c0 51
taoqiuyang 3:ab9f94d112c0 52
taoqiuyang 3:ab9f94d112c0 53
taoqiuyang 0:f4d390c06705 54 int main() {
taoqiuyang 2:afb333543af5 55 IMU.baud(57600);
taoqiuyang 4:37d118f2348c 56 IMU.attach(&IMU_serial_ISR);
taoqiuyang 5:451b8203ef99 57 GPS.baud(38400);
taoqiuyang 5:451b8203ef99 58 GPS.attach(&GPS_serial_ISR);
taoqiuyang 1:e7245ffb4820 59
taoqiuyang 2:afb333543af5 60 while (1) {
taoqiuyang 2:afb333543af5 61 led1 = !led1;
taoqiuyang 5:451b8203ef99 62 wait(0.2);
taoqiuyang 0:f4d390c06705 63 }
taoqiuyang 0:f4d390c06705 64 }