2020/08/31 bmx055のライブラリ及びプログラム内容を一部変更. 変換レートを更新する必要あり?
Dependencies: mbed BMX055_rev2 SDFileSystem GPS_Interface
main.cpp
- Committer:
- MatsumotoKouki
- Date:
- 2020-08-24
- Revision:
- 1:4c7bace668f6
- Parent:
- 0:34d043558630
- Child:
- 2:28ccb8bdac86
File content as of revision 1:4c7bace668f6:
#include "mbed.h" #include "BMX055.h" #include "SDFileSystem.h" Serial gps(PA_9, PA_10); // tx, rx DigitalIn FlightPin(PB_0); DigitalOut fet1(PA_8); //MOSFET PIN:GATE DigitalOut fet2(PA_11); BMX055 bmx(PB_7,PB_6);//SDA,SCL SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd"); // the pinout on the mbed Cool Components workshop board Ticker warikomi; Timeout t; //double a[3],b[3],c[3]; int i,rlock,mode; char ns,ew; float w_time;//,hokui,tokei; float hokui,tokei; float g_hokui,g_tokei; float d_hokui,m_hokui,d_tokei,m_tokei; char gps_data[256]; char str[256]; void getGPS(float *hokui_n,float *tokei_n); //void callback (); void FlightPinDriver(); void nichrome_ON(); void buzzer(); int main() { float *hokui_n,*tokei_n; mkdir("/sd/mydir00", 0777); FILE *fp = fopen("/sd/mydir00/sdtest.txt", "w"); if(fp == NULL) { error("Could not open file for write\n"); } gps.baud(9600); //pc.baud(9600); //gps.attach(getGPS(&hokui_n,&tokei_n),Serial::RxIrq); warikomi.attach(&FlightPinDriver,0.5); while(1) { getGPS(hokui_n,tokei_n); bmx.getAcc(); bmx.getGyro(); bmx.getMag(); /* for(int i=0;i<=3;i++){ a[i]=(bmx.accel[i]/512)*9.8; b[i]=(bmx.gyroscope[i]*125)/2048; c[i]=bmx.magnet[i]; }*/ 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]); wait(0.2); } fclose(fp); return 0; } void getGPS(float *hokui_n,float *tokei_n) { //関数getGPS定義 unsigned char c = gps.getc(); if( c=='$' || i == 256){ mode = 0; i = 0; } if(mode==0){ if((gps_data[i]=c) != '\r'){ i++; }else{ gps_data[i]='\0'; // pc.printf("%s\r\n",gps_data); if( sscanf(gps_data, "$GPGGA,%f,%f,%c,%f,%c,%d",&w_time,&hokui,&ns,&tokei,&ew,&rlock) >= 1){ if(rlock==1){ // pc.printf("Status:Lock(%d)\n\r",rlock); //logitude d_tokei= int(tokei/100); m_tokei= (tokei-d_tokei*100)/60; g_tokei= d_tokei+m_tokei; //pc.printf("Log:%4.5f,",g_tokei); //Latitude d_hokui=int(hokui/100); m_hokui=(hokui-d_hokui*100)/60; g_hokui=d_hokui+m_hokui; // pc.printf("Lat:%4.5f\n\r",g_hokui); *hokui_n=g_hokui; *tokei_n=g_tokei; } //else{ //pc.printf("\n\rStatus:unLock(%d)\n\r",rlock); //pc.printf("%s",gps_data); //} }//if *hokui_n=hokui; *tokei_n=tokei; } //else } //L.16 if } /*void callback () { int i; char buf[65]; //i = im920.recv(buf, 64); buf[i] = 0; printf("recv: '%s' (%d)\r\n", buf, i); }*/ void FlightPinDriver(){ if(FlightPin==1){ printf("Flight Pin Worked!!"); warikomi.detach(); t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間 } } void nichrome_ON(){ printf("テグスカット!\n\r"); fet1=1; wait(2.0);//テグスを切るまでにかかる時間 fet1=0; t.detach(); t.attach(buzzer,6);//ブザー作動までの時間 } void buzzer(){ printf("ブザー作動\n\r"); fet2=1; }