ロガー

Dependencies:   MPU6050 MS5607 mbed

Committer:
mikawataru
Date:
Wed Feb 08 09:54:38 2017 +0000
Revision:
0:f93d0be13473
LPC1768????????????????GPS???;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikawataru 0:f93d0be13473 1 #include "mbed.h"
mikawataru 0:f93d0be13473 2 #include "MPU6050.h"
mikawataru 0:f93d0be13473 3 #include "MS5607I2C.h"
mikawataru 0:f93d0be13473 4
mikawataru 0:f93d0be13473 5 DigitalOut led_st(p19);
mikawataru 0:f93d0be13473 6 DigitalOut led_act(p20);
mikawataru 0:f93d0be13473 7 DigitalIn sw(p21);
mikawataru 0:f93d0be13473 8 MPU6050 mpu(p9,p10);
mikawataru 0:f93d0be13473 9 MS5607I2C ms5607(p9, p10, false);
mikawataru 0:f93d0be13473 10 Serial gps(p28,p27);
mikawataru 0:f93d0be13473 11 Serial pc(USBTX, USBRX);
mikawataru 0:f93d0be13473 12
mikawataru 0:f93d0be13473 13 char gps_data[256];
mikawataru 0:f93d0be13473 14 int i,rlock,mode;
mikawataru 0:f93d0be13473 15 float a[3];
mikawataru 0:f93d0be13473 16 float g[3];
mikawataru 0:f93d0be13473 17 float pressure,temperature,altitude;
mikawataru 0:f93d0be13473 18
mikawataru 0:f93d0be13473 19 void getGPS();
mikawataru 0:f93d0be13473 20 void standby();
mikawataru 0:f93d0be13473 21 void action();
mikawataru 0:f93d0be13473 22
mikawataru 0:f93d0be13473 23 int main() {
mikawataru 0:f93d0be13473 24 mpu.setAcceleroRange(0);
mikawataru 0:f93d0be13473 25 mpu.setGyroRange(0);
mikawataru 0:f93d0be13473 26 gps.baud(9600);
mikawataru 0:f93d0be13473 27 gps.attach(getGPS,Serial::RxIrq);
mikawataru 0:f93d0be13473 28 while(1){
mikawataru 0:f93d0be13473 29 if(sw)action();
mikawataru 0:f93d0be13473 30 else standby();
mikawataru 0:f93d0be13473 31 }
mikawataru 0:f93d0be13473 32 }
mikawataru 0:f93d0be13473 33
mikawataru 0:f93d0be13473 34 void standby(){
mikawataru 0:f93d0be13473 35 led_act = 0;
mikawataru 0:f93d0be13473 36 led_st = 1;
mikawataru 0:f93d0be13473 37 pc.printf("mode(standby):%6.2f\t%6.2f\t%6.2f\r\n",ms5607.getPressure(),ms5607.getTemperature(),ms5607.getAltitude());
mikawataru 0:f93d0be13473 38 wait(3);
mikawataru 0:f93d0be13473 39 }
mikawataru 0:f93d0be13473 40 void action(){
mikawataru 0:f93d0be13473 41 led_act = 1;
mikawataru 0:f93d0be13473 42 led_st = 0;
mikawataru 0:f93d0be13473 43 mpu.getAccelero(a);
mikawataru 0:f93d0be13473 44 mpu.getGyro(g);
mikawataru 0:f93d0be13473 45 pressure = ms5607.getPressure();
mikawataru 0:f93d0be13473 46 temperature = ms5607.getTemperature();
mikawataru 0:f93d0be13473 47 altitude = ms5607.getAltitude();
mikawataru 0:f93d0be13473 48 pc.printf("mode(action):%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%4.3f,%6.2f,%6.2f,%6.2f\r\n",a[0],a[1],a[2],g[0],g[1],g[2],pressure,temperature,altitude);
mikawataru 0:f93d0be13473 49 }
mikawataru 0:f93d0be13473 50
mikawataru 0:f93d0be13473 51 void getGPS() {
mikawataru 0:f93d0be13473 52 unsigned char c = gps.getc();
mikawataru 0:f93d0be13473 53 if( c=='$' || i == 256){
mikawataru 0:f93d0be13473 54 mode = 0;
mikawataru 0:f93d0be13473 55 i = 0;
mikawataru 0:f93d0be13473 56 sprintf(gps_data,"");
mikawataru 0:f93d0be13473 57 }
mikawataru 0:f93d0be13473 58 if(mode==0){
mikawataru 0:f93d0be13473 59 char ns,ew;
mikawataru 0:f93d0be13473 60 float w_time,hokui,tokei;
mikawataru 0:f93d0be13473 61 float g_hokui,g_tokei;
mikawataru 0:f93d0be13473 62 float d_hokui,m_hokui,d_tokei,m_tokei;
mikawataru 0:f93d0be13473 63 if((gps_data[i]=c) != '\r'){
mikawataru 0:f93d0be13473 64 i++;
mikawataru 0:f93d0be13473 65 }else{
mikawataru 0:f93d0be13473 66 gps_data[i]='\0';
mikawataru 0:f93d0be13473 67 if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){
mikawataru 0:f93d0be13473 68 if(rlock==1){
mikawataru 0:f93d0be13473 69 pc.printf("Status:Lock(%d)\n\r",rlock);
mikawataru 0:f93d0be13473 70 //logitude
mikawataru 0:f93d0be13473 71 d_tokei= int(tokei/100);
mikawataru 0:f93d0be13473 72 m_tokei= (tokei-d_tokei*100)/60;
mikawataru 0:f93d0be13473 73 g_tokei= d_tokei+m_tokei;
mikawataru 0:f93d0be13473 74 //Latitude
mikawataru 0:f93d0be13473 75 d_hokui=int(hokui/100);
mikawataru 0:f93d0be13473 76 m_hokui=(hokui-d_hokui*100)/60;
mikawataru 0:f93d0be13473 77 g_hokui=d_hokui+m_hokui;
mikawataru 0:f93d0be13473 78 pc.printf("Lon:%.6f, Lat:%.6f\n\r",g_tokei, g_hokui);
mikawataru 0:f93d0be13473 79 }
mikawataru 0:f93d0be13473 80 else{
mikawataru 0:f93d0be13473 81 pc.printf("\n\rStatus:unLock(%d)\n\r",rlock);
mikawataru 0:f93d0be13473 82 pc.printf("%s\r\n",gps_data);
mikawataru 0:f93d0be13473 83 }
mikawataru 0:f93d0be13473 84 sprintf(gps_data, "");
mikawataru 0:f93d0be13473 85 }//if
mikawataru 0:f93d0be13473 86 }
mikawataru 0:f93d0be13473 87 }
mikawataru 0:f93d0be13473 88 }