always GPS 0

Dependencies:   mbed BMX055_rev2 SDFileSystem

Committer:
MatsumotoKouki
Date:
Wed Aug 19 01:29:35 2020 +0000
Revision:
0:34d043558630
Child:
1:4c7bace668f6
ugoita

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 0:34d043558630 4 //#include "IM920.h"
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 0:34d043558630 9 //DigitalOut myled(LED1);
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 0:34d043558630 14 //IM920 im920(PA_2,PA_3,PA_0,PA_1);
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 //Serial gps(PA_9, PA_10); // tx, rxD
MatsumotoKouki 0:34d043558630 20 int i,rlock,mode;
MatsumotoKouki 0:34d043558630 21 char ns,ew;
MatsumotoKouki 0:34d043558630 22 float w_time;//,hokui,tokei;
MatsumotoKouki 0:34d043558630 23 float hokui,tokei;
MatsumotoKouki 0:34d043558630 24 float g_hokui,g_tokei;
MatsumotoKouki 0:34d043558630 25 float d_hokui,m_hokui,d_tokei,m_tokei;
MatsumotoKouki 0:34d043558630 26 char gps_data[256];
MatsumotoKouki 0:34d043558630 27 char str[256];
MatsumotoKouki 0:34d043558630 28 //,gps2_data[256];
MatsumotoKouki 0:34d043558630 29
MatsumotoKouki 0:34d043558630 30 void getGPS(float *hokui_n,float *tokei_n);
MatsumotoKouki 0:34d043558630 31 //void callback ();
MatsumotoKouki 0:34d043558630 32 void FlightPinDriver();
MatsumotoKouki 0:34d043558630 33 void nichrome_ON();
MatsumotoKouki 0:34d043558630 34 void buzzer();
MatsumotoKouki 0:34d043558630 35
MatsumotoKouki 0:34d043558630 36 //void getGPS();
MatsumotoKouki 0:34d043558630 37
MatsumotoKouki 0:34d043558630 38 int main() {
MatsumotoKouki 0:34d043558630 39
MatsumotoKouki 0:34d043558630 40 float *hokui_n,*tokei_n;
MatsumotoKouki 0:34d043558630 41
MatsumotoKouki 0:34d043558630 42 mkdir("/sd/mydir00", 0777);
MatsumotoKouki 0:34d043558630 43 FILE *fp = fopen("/sd/mydir00/sdtest.txt", "w");
MatsumotoKouki 0:34d043558630 44 if(fp == NULL) {
MatsumotoKouki 0:34d043558630 45 error("Could not open file for write\n");
MatsumotoKouki 0:34d043558630 46 }
MatsumotoKouki 0:34d043558630 47
MatsumotoKouki 0:34d043558630 48 //pc.printf("*** GPS GT-720F ***");//GPS作動
MatsumotoKouki 0:34d043558630 49 gps.baud(9600);
MatsumotoKouki 0:34d043558630 50 //pc.baud(9600);
MatsumotoKouki 0:34d043558630 51 //gps.attach(getGPS(&hokui_n,&tokei_n),Serial::RxIrq);
MatsumotoKouki 0:34d043558630 52 warikomi.attach(&FlightPinDriver,0.5);
MatsumotoKouki 0:34d043558630 53
MatsumotoKouki 0:34d043558630 54
MatsumotoKouki 0:34d043558630 55 while(1) {
MatsumotoKouki 0:34d043558630 56 getGPS(hokui_n,tokei_n);
MatsumotoKouki 0:34d043558630 57 bmx.getAcc();
MatsumotoKouki 0:34d043558630 58 bmx.getGyro();
MatsumotoKouki 0:34d043558630 59 bmx.getMag();
MatsumotoKouki 0:34d043558630 60 /* for(int i=0;i<=3;i++){
MatsumotoKouki 0:34d043558630 61 a[i]=(bmx.accel[i]/512)*9.8;
MatsumotoKouki 0:34d043558630 62 b[i]=(bmx.gyroscope[i]*125)/2048;
MatsumotoKouki 0:34d043558630 63 c[i]=bmx.magnet[i];
MatsumotoKouki 0:34d043558630 64 }*/
MatsumotoKouki 0:34d043558630 65 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 0:34d043558630 66 /* im920.init();
MatsumotoKouki 0:34d043558630 67 im920.attach(callback);
MatsumotoKouki 0:34d043558630 68 im920.poll();
MatsumotoKouki 0:34d043558630 69 //char hokui_c=char(hokui_n);
MatsumotoKouki 0:34d043558630 70 sprintf(str,"北緯:%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 0:34d043558630 71 im920.send(str,256); */ //64-69はIM関連
MatsumotoKouki 0:34d043558630 72 wait(0.2);
MatsumotoKouki 0:34d043558630 73 }
MatsumotoKouki 0:34d043558630 74
MatsumotoKouki 0:34d043558630 75 /* while(t<3){//テグスカットまでの時間
MatsumotoKouki 0:34d043558630 76 printf("waiting...");
MatsumotoKouki 0:34d043558630 77 }
MatsumotoKouki 0:34d043558630 78 if(t==3){
MatsumotoKouki 0:34d043558630 79 printf("テグスカット!");
MatsumotoKouki 0:34d043558630 80 fet1=1;
MatsumotoKouki 0:34d043558630 81 }
MatsumotoKouki 0:34d043558630 82 while(t<6){
MatsumotoKouki 0:34d043558630 83 printf("waiting...");
MatsumotoKouki 0:34d043558630 84 }
MatsumotoKouki 0:34d043558630 85 if(t==6){
MatsumotoKouki 0:34d043558630 86 printf("テグスカットEND");
MatsumotoKouki 0:34d043558630 87 fet1=0;
MatsumotoKouki 0:34d043558630 88 }
MatsumotoKouki 0:34d043558630 89 while(t<9){
MatsumotoKouki 0:34d043558630 90 printf("waiting...");
MatsumotoKouki 0:34d043558630 91 }
MatsumotoKouki 0:34d043558630 92 if(t==9){
MatsumotoKouki 0:34d043558630 93 printf("ブザー");
MatsumotoKouki 0:34d043558630 94 fet2=1;
MatsumotoKouki 0:34d043558630 95 }
MatsumotoKouki 0:34d043558630 96 }*/
MatsumotoKouki 0:34d043558630 97
MatsumotoKouki 0:34d043558630 98 fclose(fp);
MatsumotoKouki 0:34d043558630 99
MatsumotoKouki 0:34d043558630 100
MatsumotoKouki 0:34d043558630 101
MatsumotoKouki 0:34d043558630 102 /*while(FlightPin==0) { //Flight Pin作動
MatsumotoKouki 0:34d043558630 103 printf("waiting\n\r");
MatsumotoKouki 0:34d043558630 104 wait(0.5);
MatsumotoKouki 0:34d043558630 105 }*/
MatsumotoKouki 0:34d043558630 106 /*if(FlightPin==1){
MatsumotoKouki 0:34d043558630 107 printf("Flight Pin Worked!!");
MatsumotoKouki 0:34d043558630 108 }
MatsumotoKouki 0:34d043558630 109
MatsumotoKouki 0:34d043558630 110 fet1=0;
MatsumotoKouki 0:34d043558630 111 fet2=0;
MatsumotoKouki 0:34d043558630 112 wait(3);//テグスカットまでの時間
MatsumotoKouki 0:34d043558630 113 fet1=1;
MatsumotoKouki 0:34d043558630 114 wait(3);//テグスカット中
MatsumotoKouki 0:34d043558630 115
MatsumotoKouki 0:34d043558630 116 fet1=0;
MatsumotoKouki 0:34d043558630 117 wait(3);//ブザー作動までの時間
MatsumotoKouki 0:34d043558630 118
MatsumotoKouki 0:34d043558630 119 fet2=1;//ブザー*/
MatsumotoKouki 0:34d043558630 120 fclose(fp);
MatsumotoKouki 0:34d043558630 121
MatsumotoKouki 0:34d043558630 122 return 0;
MatsumotoKouki 0:34d043558630 123
MatsumotoKouki 0:34d043558630 124 }
MatsumotoKouki 0:34d043558630 125
MatsumotoKouki 0:34d043558630 126
MatsumotoKouki 0:34d043558630 127 void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義
MatsumotoKouki 0:34d043558630 128 unsigned char c = gps.getc();
MatsumotoKouki 0:34d043558630 129 if( c=='$' || i == 256){
MatsumotoKouki 0:34d043558630 130 mode = 0;
MatsumotoKouki 0:34d043558630 131 i = 0;
MatsumotoKouki 0:34d043558630 132 }
MatsumotoKouki 0:34d043558630 133 if(mode==0){
MatsumotoKouki 0:34d043558630 134 if((gps_data[i]=c) != '\r'){
MatsumotoKouki 0:34d043558630 135 i++;
MatsumotoKouki 0:34d043558630 136 }else{
MatsumotoKouki 0:34d043558630 137 gps_data[i]='\0';
MatsumotoKouki 0:34d043558630 138 // pc.printf("%s\r\n",gps_data);
MatsumotoKouki 0:34d043558630 139 if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){
MatsumotoKouki 0:34d043558630 140 if(rlock==1){
MatsumotoKouki 0:34d043558630 141 // pc.printf("Status:Lock(%d)\n\r",rlock);
MatsumotoKouki 0:34d043558630 142 //logitude
MatsumotoKouki 0:34d043558630 143 d_tokei= int(tokei/100);
MatsumotoKouki 0:34d043558630 144 m_tokei= (tokei-d_tokei*100)/60;
MatsumotoKouki 0:34d043558630 145 g_tokei= d_tokei+m_tokei;
MatsumotoKouki 0:34d043558630 146 //pc.printf("Log:%4.5f,",g_tokei); //Latitude
MatsumotoKouki 0:34d043558630 147 d_hokui=int(hokui/100);
MatsumotoKouki 0:34d043558630 148 m_hokui=(hokui-d_hokui*100)/60;
MatsumotoKouki 0:34d043558630 149 g_hokui=d_hokui+m_hokui;
MatsumotoKouki 0:34d043558630 150 // pc.printf("Lat:%4.5f\n\r",g_hokui);
MatsumotoKouki 0:34d043558630 151
MatsumotoKouki 0:34d043558630 152 *hokui_n=g_hokui;
MatsumotoKouki 0:34d043558630 153 *tokei_n=g_tokei;
MatsumotoKouki 0:34d043558630 154 }
MatsumotoKouki 0:34d043558630 155 //else{
MatsumotoKouki 0:34d043558630 156 //pc.printf("\n\rStatus:unLock(%d)\n\r",rlock);
MatsumotoKouki 0:34d043558630 157 //pc.printf("%s",gps_data);
MatsumotoKouki 0:34d043558630 158 //}
MatsumotoKouki 0:34d043558630 159 }//if
MatsumotoKouki 0:34d043558630 160 *hokui_n=hokui;
MatsumotoKouki 0:34d043558630 161 *tokei_n=tokei;
MatsumotoKouki 0:34d043558630 162 } //else
MatsumotoKouki 0:34d043558630 163 } //L.16 if
MatsumotoKouki 0:34d043558630 164 }
MatsumotoKouki 0:34d043558630 165
MatsumotoKouki 0:34d043558630 166 void callback () {
MatsumotoKouki 0:34d043558630 167 int i;
MatsumotoKouki 0:34d043558630 168 char buf[65];
MatsumotoKouki 0:34d043558630 169
MatsumotoKouki 0:34d043558630 170 //i = im920.recv(buf, 64);
MatsumotoKouki 0:34d043558630 171 buf[i] = 0;
MatsumotoKouki 0:34d043558630 172 printf("recv: '%s' (%d)\r\n", buf, i);
MatsumotoKouki 0:34d043558630 173 }
MatsumotoKouki 0:34d043558630 174
MatsumotoKouki 0:34d043558630 175 void FlightPinDriver(){
MatsumotoKouki 0:34d043558630 176
MatsumotoKouki 0:34d043558630 177 if(FlightPin==1){
MatsumotoKouki 0:34d043558630 178 printf("Flight Pin Worked!!");
MatsumotoKouki 0:34d043558630 179 warikomi.detach();
MatsumotoKouki 0:34d043558630 180 t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間
MatsumotoKouki 0:34d043558630 181 }
MatsumotoKouki 0:34d043558630 182
MatsumotoKouki 0:34d043558630 183 }
MatsumotoKouki 0:34d043558630 184
MatsumotoKouki 0:34d043558630 185 void nichrome_ON(){
MatsumotoKouki 0:34d043558630 186 printf("テグスカット!\n\r");
MatsumotoKouki 0:34d043558630 187 fet1=1;
MatsumotoKouki 0:34d043558630 188 wait(2.0);//テグスを切るまでにかかる時間
MatsumotoKouki 0:34d043558630 189 fet1=0;
MatsumotoKouki 0:34d043558630 190 t.detach();
MatsumotoKouki 0:34d043558630 191 t.attach(buzzer,6);//ブザー作動までの時間
MatsumotoKouki 0:34d043558630 192 }
MatsumotoKouki 0:34d043558630 193
MatsumotoKouki 0:34d043558630 194 void buzzer(){
MatsumotoKouki 0:34d043558630 195 printf("ブザー作動\n\r");
MatsumotoKouki 0:34d043558630 196 fet2=1;
MatsumotoKouki 0:34d043558630 197 }