always GPS 0

Dependencies:   mbed BMX055_rev2 SDFileSystem

Committer:
MatsumotoKouki
Date:
Mon Aug 24 04:02:38 2020 +0000
Revision:
1:4c7bace668f6
Parent:
0:34d043558630
Child:
2:28ccb8bdac86
8/24 latest ver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MatsumotoKouki 0:34d043558630 1 #include "mbed.h"
MatsumotoKouki 0:34d043558630 2 #include "BMX055.h"
MatsumotoKouki 0:34d043558630 3 #include "SDFileSystem.h"
MatsumotoKouki 1:4c7bace668f6 4
MatsumotoKouki 0:34d043558630 5
MatsumotoKouki 0:34d043558630 6
MatsumotoKouki 0:34d043558630 7 Serial gps(PA_9, PA_10); // tx, rx
MatsumotoKouki 0:34d043558630 8 DigitalIn FlightPin(PB_0);
MatsumotoKouki 1:4c7bace668f6 9
MatsumotoKouki 0:34d043558630 10 DigitalOut fet1(PA_8); //MOSFET PIN:GATE
MatsumotoKouki 0:34d043558630 11 DigitalOut fet2(PA_11);
MatsumotoKouki 0:34d043558630 12 BMX055 bmx(PB_7,PB_6);//SDA,SCL
MatsumotoKouki 0:34d043558630 13 SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd"); // the pinout on the mbed Cool Components workshop board
MatsumotoKouki 1:4c7bace668f6 14
MatsumotoKouki 0:34d043558630 15 Ticker warikomi;
MatsumotoKouki 0:34d043558630 16 Timeout t;
MatsumotoKouki 0:34d043558630 17 //double a[3],b[3],c[3];
MatsumotoKouki 0:34d043558630 18
MatsumotoKouki 0:34d043558630 19 int i,rlock,mode;
MatsumotoKouki 0:34d043558630 20 char ns,ew;
MatsumotoKouki 0:34d043558630 21 float w_time;//,hokui,tokei;
MatsumotoKouki 0:34d043558630 22 float hokui,tokei;
MatsumotoKouki 0:34d043558630 23 float g_hokui,g_tokei;
MatsumotoKouki 0:34d043558630 24 float d_hokui,m_hokui,d_tokei,m_tokei;
MatsumotoKouki 0:34d043558630 25 char gps_data[256];
MatsumotoKouki 0:34d043558630 26 char str[256];
MatsumotoKouki 1:4c7bace668f6 27
MatsumotoKouki 0:34d043558630 28
MatsumotoKouki 0:34d043558630 29 void getGPS(float *hokui_n,float *tokei_n);
MatsumotoKouki 0:34d043558630 30 //void callback ();
MatsumotoKouki 0:34d043558630 31 void FlightPinDriver();
MatsumotoKouki 0:34d043558630 32 void nichrome_ON();
MatsumotoKouki 0:34d043558630 33 void buzzer();
MatsumotoKouki 0:34d043558630 34
MatsumotoKouki 0:34d043558630 35
MatsumotoKouki 0:34d043558630 36 int main() {
MatsumotoKouki 0:34d043558630 37
MatsumotoKouki 0:34d043558630 38 float *hokui_n,*tokei_n;
MatsumotoKouki 0:34d043558630 39
MatsumotoKouki 0:34d043558630 40 mkdir("/sd/mydir00", 0777);
MatsumotoKouki 0:34d043558630 41 FILE *fp = fopen("/sd/mydir00/sdtest.txt", "w");
MatsumotoKouki 0:34d043558630 42 if(fp == NULL) {
MatsumotoKouki 0:34d043558630 43 error("Could not open file for write\n");
MatsumotoKouki 0:34d043558630 44 }
MatsumotoKouki 0:34d043558630 45
MatsumotoKouki 0:34d043558630 46 gps.baud(9600);
MatsumotoKouki 0:34d043558630 47 //pc.baud(9600);
MatsumotoKouki 0:34d043558630 48 //gps.attach(getGPS(&hokui_n,&tokei_n),Serial::RxIrq);
MatsumotoKouki 0:34d043558630 49 warikomi.attach(&FlightPinDriver,0.5);
MatsumotoKouki 0:34d043558630 50
MatsumotoKouki 0:34d043558630 51
MatsumotoKouki 0:34d043558630 52 while(1) {
MatsumotoKouki 0:34d043558630 53 getGPS(hokui_n,tokei_n);
MatsumotoKouki 0:34d043558630 54 bmx.getAcc();
MatsumotoKouki 0:34d043558630 55 bmx.getGyro();
MatsumotoKouki 0:34d043558630 56 bmx.getMag();
MatsumotoKouki 0:34d043558630 57 /* for(int i=0;i<=3;i++){
MatsumotoKouki 0:34d043558630 58 a[i]=(bmx.accel[i]/512)*9.8;
MatsumotoKouki 0:34d043558630 59 b[i]=(bmx.gyroscope[i]*125)/2048;
MatsumotoKouki 0:34d043558630 60 c[i]=bmx.magnet[i];
MatsumotoKouki 0:34d043558630 61 }*/
MatsumotoKouki 0:34d043558630 62 fprintf(fp,"北緯:%f,東経:%f,加速度:%f,%f,%f,ジャイロ:%2.4f,%2.4f,%2.4f,地磁気:%2.4f,%2.4f,%2.4f\n\r",hokui_n,tokei_n,(bmx.accel[0]/512)*9.8,(bmx.accel[1]/512)*9.8,(bmx.accel[2]/512)*9.8,(bmx.gyroscope[0]*125)/2048,(bmx.gyroscope[1]*125)/2048,(bmx.gyroscope[2]*125)/2048,bmx.magnet[0],bmx.magnet[1],bmx.magnet[2]);
MatsumotoKouki 1:4c7bace668f6 63
MatsumotoKouki 0:34d043558630 64 wait(0.2);
MatsumotoKouki 0:34d043558630 65 }
MatsumotoKouki 0:34d043558630 66
MatsumotoKouki 0:34d043558630 67
MatsumotoKouki 0:34d043558630 68 fclose(fp);
MatsumotoKouki 0:34d043558630 69
MatsumotoKouki 0:34d043558630 70 return 0;
MatsumotoKouki 0:34d043558630 71
MatsumotoKouki 0:34d043558630 72 }
MatsumotoKouki 0:34d043558630 73
MatsumotoKouki 0:34d043558630 74
MatsumotoKouki 0:34d043558630 75 void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義
MatsumotoKouki 0:34d043558630 76 unsigned char c = gps.getc();
MatsumotoKouki 0:34d043558630 77 if( c=='$' || i == 256){
MatsumotoKouki 0:34d043558630 78 mode = 0;
MatsumotoKouki 0:34d043558630 79 i = 0;
MatsumotoKouki 0:34d043558630 80 }
MatsumotoKouki 0:34d043558630 81 if(mode==0){
MatsumotoKouki 0:34d043558630 82 if((gps_data[i]=c) != '\r'){
MatsumotoKouki 0:34d043558630 83 i++;
MatsumotoKouki 0:34d043558630 84 }else{
MatsumotoKouki 0:34d043558630 85 gps_data[i]='\0';
MatsumotoKouki 0:34d043558630 86 // pc.printf("%s\r\n",gps_data);
MatsumotoKouki 0:34d043558630 87 if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){
MatsumotoKouki 0:34d043558630 88 if(rlock==1){
MatsumotoKouki 0:34d043558630 89 // pc.printf("Status:Lock(%d)\n\r",rlock);
MatsumotoKouki 0:34d043558630 90 //logitude
MatsumotoKouki 0:34d043558630 91 d_tokei= int(tokei/100);
MatsumotoKouki 0:34d043558630 92 m_tokei= (tokei-d_tokei*100)/60;
MatsumotoKouki 0:34d043558630 93 g_tokei= d_tokei+m_tokei;
MatsumotoKouki 0:34d043558630 94 //pc.printf("Log:%4.5f,",g_tokei); //Latitude
MatsumotoKouki 0:34d043558630 95 d_hokui=int(hokui/100);
MatsumotoKouki 0:34d043558630 96 m_hokui=(hokui-d_hokui*100)/60;
MatsumotoKouki 0:34d043558630 97 g_hokui=d_hokui+m_hokui;
MatsumotoKouki 0:34d043558630 98 // pc.printf("Lat:%4.5f\n\r",g_hokui);
MatsumotoKouki 0:34d043558630 99
MatsumotoKouki 0:34d043558630 100 *hokui_n=g_hokui;
MatsumotoKouki 0:34d043558630 101 *tokei_n=g_tokei;
MatsumotoKouki 0:34d043558630 102 }
MatsumotoKouki 0:34d043558630 103 //else{
MatsumotoKouki 0:34d043558630 104 //pc.printf("\n\rStatus:unLock(%d)\n\r",rlock);
MatsumotoKouki 0:34d043558630 105 //pc.printf("%s",gps_data);
MatsumotoKouki 0:34d043558630 106 //}
MatsumotoKouki 0:34d043558630 107 }//if
MatsumotoKouki 0:34d043558630 108 *hokui_n=hokui;
MatsumotoKouki 0:34d043558630 109 *tokei_n=tokei;
MatsumotoKouki 0:34d043558630 110 } //else
MatsumotoKouki 0:34d043558630 111 } //L.16 if
MatsumotoKouki 0:34d043558630 112 }
MatsumotoKouki 0:34d043558630 113
MatsumotoKouki 1:4c7bace668f6 114 /*void callback () {
MatsumotoKouki 0:34d043558630 115 int i;
MatsumotoKouki 0:34d043558630 116 char buf[65];
MatsumotoKouki 0:34d043558630 117
MatsumotoKouki 0:34d043558630 118 //i = im920.recv(buf, 64);
MatsumotoKouki 0:34d043558630 119 buf[i] = 0;
MatsumotoKouki 0:34d043558630 120 printf("recv: '%s' (%d)\r\n", buf, i);
MatsumotoKouki 1:4c7bace668f6 121 }*/
MatsumotoKouki 0:34d043558630 122
MatsumotoKouki 0:34d043558630 123 void FlightPinDriver(){
MatsumotoKouki 0:34d043558630 124
MatsumotoKouki 0:34d043558630 125 if(FlightPin==1){
MatsumotoKouki 0:34d043558630 126 printf("Flight Pin Worked!!");
MatsumotoKouki 0:34d043558630 127 warikomi.detach();
MatsumotoKouki 0:34d043558630 128 t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間
MatsumotoKouki 0:34d043558630 129 }
MatsumotoKouki 0:34d043558630 130
MatsumotoKouki 0:34d043558630 131 }
MatsumotoKouki 0:34d043558630 132
MatsumotoKouki 0:34d043558630 133 void nichrome_ON(){
MatsumotoKouki 0:34d043558630 134 printf("テグスカット!\n\r");
MatsumotoKouki 0:34d043558630 135 fet1=1;
MatsumotoKouki 0:34d043558630 136 wait(2.0);//テグスを切るまでにかかる時間
MatsumotoKouki 0:34d043558630 137 fet1=0;
MatsumotoKouki 0:34d043558630 138 t.detach();
MatsumotoKouki 0:34d043558630 139 t.attach(buzzer,6);//ブザー作動までの時間
MatsumotoKouki 0:34d043558630 140 }
MatsumotoKouki 0:34d043558630 141
MatsumotoKouki 0:34d043558630 142 void buzzer(){
MatsumotoKouki 0:34d043558630 143 printf("ブザー作動\n\r");
MatsumotoKouki 0:34d043558630 144 fet2=1;
MatsumotoKouki 0:34d043558630 145 }