2020/08/31 bmx055のライブラリ及びプログラム内容を一部変更. 変換レートを更新する必要あり?

Dependencies:   mbed BMX055_rev2 SDFileSystem GPS_Interface

Committer:
MatsumotoKouki
Date:
Wed Sep 09 06:45:29 2020 +0000
Revision:
13:7947a88c4e39
Parent:
11:2fc33706edd4
not stop while nichrome (if 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 10:c60fec9b4e1b 4 #include "GPS.h"
MatsumotoKouki 1:4c7bace668f6 5
falconsyunya 11:2fc33706edd4 6 GPS gps(PA_9, PA_10); //TX(GPS_RX),RX(GPS_TX)
MatsumotoKouki 0:34d043558630 7 DigitalIn FlightPin(PB_0);
MatsumotoKouki 1:4c7bace668f6 8
MatsumotoKouki 10:c60fec9b4e1b 9 Serial pc(USBTX, USBRX, 9600);//パソコン側からもマイコン⇒IM920のデータはみれる
falconsyunya 2:28ccb8bdac86 10 Serial uart(PA_2, PA_3, 19200);//TX(IM920_RX), RX(IM920_TX)
falconsyunya 2:28ccb8bdac86 11
MatsumotoKouki 0:34d043558630 12 DigitalOut fet1(PA_8); //MOSFET PIN:GATE
MatsumotoKouki 0:34d043558630 13 DigitalOut fet2(PA_11);
MatsumotoKouki 0:34d043558630 14 BMX055 bmx(PB_7,PB_6);//SDA,SCL
MatsumotoKouki 0:34d043558630 15 SDFileSystem sd(PA_7, PA_6, PA_5, PA_4, "sd"); // the pinout on the mbed Cool Components workshop board
MatsumotoKouki 1:4c7bace668f6 16
MatsumotoKouki 0:34d043558630 17 Ticker warikomi;
MatsumotoKouki 0:34d043558630 18 Timeout t;
MatsumotoKouki 13:7947a88c4e39 19 Timer t1;
MatsumotoKouki 13:7947a88c4e39 20
MatsumotoKouki 0:34d043558630 21 //double a[3],b[3],c[3];
MatsumotoKouki 9:fc0559c27628 22 int i,j=0,rlock,mode;
MatsumotoKouki 0:34d043558630 23 char ns,ew;
MatsumotoKouki 0:34d043558630 24 float w_time;//,hokui,tokei;
MatsumotoKouki 0:34d043558630 25 float hokui,tokei;
MatsumotoKouki 0:34d043558630 26 float g_hokui,g_tokei;
MatsumotoKouki 0:34d043558630 27 float d_hokui,m_hokui,d_tokei,m_tokei;
MatsumotoKouki 0:34d043558630 28 char gps_data[256];
MatsumotoKouki 0:34d043558630 29 char str[256];
MatsumotoKouki 1:4c7bace668f6 30
MatsumotoKouki 0:34d043558630 31
MatsumotoKouki 10:c60fec9b4e1b 32 //void getGPS(float *hokui_n,float *tokei_n);
MatsumotoKouki 0:34d043558630 33 //void callback ();
MatsumotoKouki 0:34d043558630 34 void FlightPinDriver();
MatsumotoKouki 0:34d043558630 35 void nichrome_ON();
MatsumotoKouki 13:7947a88c4e39 36 //void nichrome_OFF();
MatsumotoKouki 0:34d043558630 37 void buzzer();
MatsumotoKouki 0:34d043558630 38
MatsumotoKouki 0:34d043558630 39
MatsumotoKouki 0:34d043558630 40 int main() {
MatsumotoKouki 10:c60fec9b4e1b 41 // float *hokui_n,*tokei_n;
MatsumotoKouki 0:34d043558630 42
MatsumotoKouki 0:34d043558630 43 mkdir("/sd/mydir00", 0777);
MatsumotoKouki 7:e68ead6d3c1a 44 FILE *fp = fopen("/sd/mydir00/sddata.csv", "w");
MatsumotoKouki 0:34d043558630 45 if(fp == NULL) {
MatsumotoKouki 0:34d043558630 46 error("Could not open file for write\n");
MatsumotoKouki 0:34d043558630 47 }
MatsumotoKouki 0:34d043558630 48
MatsumotoKouki 10:c60fec9b4e1b 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 10:c60fec9b4e1b 52 fprintf(fp,"N,E,acc:x,acc:y,acc:z,gyr:x,gyr:y,gyr:z,mag:x,mag:y,mag:z\r\n");
MatsumotoKouki 13:7947a88c4e39 53 //warikomi.attach(&FlightPinDriver,0.5);
MatsumotoKouki 0:34d043558630 54
MatsumotoKouki 0:34d043558630 55
falconsyunya 3:aad6f83b618e 56 while(1) {
falconsyunya 3:aad6f83b618e 57 //BMX055部分
MatsumotoKouki 13:7947a88c4e39 58
MatsumotoKouki 13:7947a88c4e39 59 if(FlightPin==1){
MatsumotoKouki 13:7947a88c4e39 60 printf("Flight Pin Worked!!\n\r");
MatsumotoKouki 13:7947a88c4e39 61 t1.start();
MatsumotoKouki 13:7947a88c4e39 62 // warikomi.detach();
MatsumotoKouki 13:7947a88c4e39 63 }
MatsumotoKouki 13:7947a88c4e39 64
MatsumotoKouki 13:7947a88c4e39 65 if(t1==3){ //ニクロム線作動までの時間
MatsumotoKouki 13:7947a88c4e39 66 printf("cut!\n\r");
MatsumotoKouki 13:7947a88c4e39 67 fet1=1;
MatsumotoKouki 13:7947a88c4e39 68 }
MatsumotoKouki 13:7947a88c4e39 69
MatsumotoKouki 13:7947a88c4e39 70 if(t1==6){ //カット終了までの時間
MatsumotoKouki 13:7947a88c4e39 71 printf("cut finished");
MatsumotoKouki 13:7947a88c4e39 72 fet1=0;
MatsumotoKouki 13:7947a88c4e39 73 }
MatsumotoKouki 13:7947a88c4e39 74
MatsumotoKouki 13:7947a88c4e39 75 if(t1==9){ //ブザー作動までの時間
MatsumotoKouki 13:7947a88c4e39 76 printf("buzzer");
MatsumotoKouki 13:7947a88c4e39 77 fet2=1;
MatsumotoKouki 13:7947a88c4e39 78 }
MatsumotoKouki 13:7947a88c4e39 79
MatsumotoKouki 13:7947a88c4e39 80
falconsyunya 2:28ccb8bdac86 81 bmx.getAcc();//加速度の取得
falconsyunya 2:28ccb8bdac86 82 bmx.getGyro();//角力加速度の取得
MatsumotoKouki 7:e68ead6d3c1a 83 bmx.getMag();//地磁気の取得
MatsumotoKouki 7:e68ead6d3c1a 84 int a[3],b[3],c[3];
falconsyunya 3:aad6f83b618e 85 for(int i=0;i<3;i++){
falconsyunya 3:aad6f83b618e 86 a[i]=bmx.accel[i];
falconsyunya 3:aad6f83b618e 87 b[i]=bmx.gyroscope[i];
MatsumotoKouki 7:e68ead6d3c1a 88 c[i]=bmx.magnet[i];
falconsyunya 11:2fc33706edd4 89 }
falconsyunya 11:2fc33706edd4 90
falconsyunya 3:aad6f83b618e 91 //GPS部分
falconsyunya 11:2fc33706edd4 92 //gps.getgps();
falconsyunya 11:2fc33706edd4 93 int x = (gps.longtitude-135.0f)*1000000;
falconsyunya 11:2fc33706edd4 94 int y = (gps.latitude-34.0f)*1000000;
MatsumotoKouki 13:7947a88c4e39 95 if(gps.longtitude==NULL)x=0;
MatsumotoKouki 13:7947a88c4e39 96 if(gps.latitude==NULL)y=0;
MatsumotoKouki 13:7947a88c4e39 97 //int north=x * 1000000;
MatsumotoKouki 13:7947a88c4e39 98 //int east=y * 1000000;
MatsumotoKouki 8:c2812fae50df 99
falconsyunya 11:2fc33706edd4 100 //SDカードへの書き込み
falconsyunya 11:2fc33706edd4 101 fprintf(fp,"%f,%f,%f,%f,%f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f,%2.4f\n\r",gps.longtitude,gps.latitude,(a[0]/512)*9.8,
falconsyunya 11:2fc33706edd4 102 (a[1]/512)*9.8f,(a[2]/512)*9.8f,(b[0]*125)/2048.0f,
falconsyunya 11:2fc33706edd4 103 (b[1]*125)/2048.0f,(b[2]*125)/2048.0f,c[0]/3.0f,c[1]/3.0f,c[2]/3.0f);
falconsyunya 11:2fc33706edd4 104
falconsyunya 3:aad6f83b618e 105 //IM920部分
falconsyunya 2:28ccb8bdac86 106 //ノード番号(00~FF)を設定.データを送るごとに1増やす.
falconsyunya 2:28ccb8bdac86 107 uart.printf("STNN %02x\r\n",j);
falconsyunya 2:28ccb8bdac86 108 j++;
falconsyunya 2:28ccb8bdac86 109 if(j==256){j=0;}
falconsyunya 2:28ccb8bdac86 110
falconsyunya 3:aad6f83b618e 111 uart.printf("TXDA ");//可変長データ送信コマンド
falconsyunya 2:28ccb8bdac86 112
falconsyunya 11:2fc33706edd4 113 uart.printf("%04hX%04hX%04hX",a[0],a[1],a[2]);//加速度の書き出し
falconsyunya 11:2fc33706edd4 114 uart.printf("%04hX%04hX%04hX",b[0],b[1],b[2]);//角加速度の書き出し
MatsumotoKouki 8:c2812fae50df 115
MatsumotoKouki 13:7947a88c4e39 116 uart.printf("%08x%08x",x,y);//GPS書き出し
falconsyunya 2:28ccb8bdac86 117
falconsyunya 2:28ccb8bdac86 118 uart.printf("\r\n");
MatsumotoKouki 10:c60fec9b4e1b 119 //printf("%d%d\n\r",north,east);
falconsyunya 2:28ccb8bdac86 120
falconsyunya 2:28ccb8bdac86 121 wait(0.34);//IM920長距離モードの場合,3パケット/sが理論上最大速度.
MatsumotoKouki 0:34d043558630 122 }
MatsumotoKouki 0:34d043558630 123 }
MatsumotoKouki 0:34d043558630 124
MatsumotoKouki 13:7947a88c4e39 125 /*void FlightPinDriver(){
MatsumotoKouki 0:34d043558630 126
MatsumotoKouki 0:34d043558630 127 if(FlightPin==1){
MatsumotoKouki 8:c2812fae50df 128 printf("Flight Pin Worked!!\n\r");
MatsumotoKouki 13:7947a88c4e39 129 //warikomi.detach();
MatsumotoKouki 0:34d043558630 130 t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間
MatsumotoKouki 0:34d043558630 131 }
MatsumotoKouki 0:34d043558630 132
MatsumotoKouki 0:34d043558630 133 }
MatsumotoKouki 0:34d043558630 134
MatsumotoKouki 0:34d043558630 135 void nichrome_ON(){
falconsyunya 11:2fc33706edd4 136 printf("cut!\n\r");
MatsumotoKouki 0:34d043558630 137 fet1=1;
MatsumotoKouki 0:34d043558630 138 t.detach();
MatsumotoKouki 13:7947a88c4e39 139 t.attach(nichrome_OFF,6);//ブザー作動までの時間
MatsumotoKouki 0:34d043558630 140 }
MatsumotoKouki 0:34d043558630 141
MatsumotoKouki 0:34d043558630 142 void buzzer(){
falconsyunya 11:2fc33706edd4 143 printf("buzzer\n\r");
MatsumotoKouki 0:34d043558630 144 fet2=1;
MatsumotoKouki 13:7947a88c4e39 145 }*/