ロガー
Dependencies: MPU6050 MS5607 mbed
main.cpp@0:f93d0be13473, 2017-02-08 (annotated)
- Committer:
- mikawataru
- Date:
- Wed Feb 08 09:54:38 2017 +0000
- Revision:
- 0:f93d0be13473
LPC1768????????????????GPS???;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |