2020/08/31 bmx055のライブラリ及びプログラム内容を一部変更. 変換レートを更新する必要あり?
Dependencies: mbed BMX055_rev2 SDFileSystem GPS_Interface
main.cpp@12:ed1e3282e053, 2020-09-08 (annotated)
- Committer:
- falconsyunya
- Date:
- Tue Sep 08 06:59:06 2020 +0000
- Revision:
- 12:ed1e3282e053
- Parent:
- 11:2fc33706edd4
2020/09/08;
Who changed what in which revision?
User | Revision | Line number | New 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; |
falconsyunya | 12:ed1e3282e053 | 19 | Timer timer; |
falconsyunya | 12:ed1e3282e053 | 20 | |
MatsumotoKouki | 9:fc0559c27628 | 21 | int i,j=0,rlock,mode; |
MatsumotoKouki | 0:34d043558630 | 22 | char ns,ew; |
MatsumotoKouki | 0:34d043558630 | 23 | float w_time;//,hokui,tokei; |
MatsumotoKouki | 0:34d043558630 | 24 | float hokui,tokei; |
MatsumotoKouki | 0:34d043558630 | 25 | float g_hokui,g_tokei; |
MatsumotoKouki | 0:34d043558630 | 26 | float d_hokui,m_hokui,d_tokei,m_tokei; |
MatsumotoKouki | 0:34d043558630 | 27 | char gps_data[256]; |
MatsumotoKouki | 0:34d043558630 | 28 | char str[256]; |
MatsumotoKouki | 1:4c7bace668f6 | 29 | |
MatsumotoKouki | 0:34d043558630 | 30 | |
MatsumotoKouki | 10:c60fec9b4e1b | 31 | //void getGPS(float *hokui_n,float *tokei_n); |
MatsumotoKouki | 0:34d043558630 | 32 | //void callback (); |
MatsumotoKouki | 0:34d043558630 | 33 | void FlightPinDriver(); |
MatsumotoKouki | 0:34d043558630 | 34 | void nichrome_ON(); |
MatsumotoKouki | 0:34d043558630 | 35 | void buzzer(); |
MatsumotoKouki | 0:34d043558630 | 36 | |
MatsumotoKouki | 0:34d043558630 | 37 | |
MatsumotoKouki | 0:34d043558630 | 38 | int main() { |
MatsumotoKouki | 10:c60fec9b4e1b | 39 | // float *hokui_n,*tokei_n; |
MatsumotoKouki | 0:34d043558630 | 40 | |
MatsumotoKouki | 0:34d043558630 | 41 | mkdir("/sd/mydir00", 0777); |
MatsumotoKouki | 7:e68ead6d3c1a | 42 | FILE *fp = fopen("/sd/mydir00/sddata.csv", "w"); |
MatsumotoKouki | 0:34d043558630 | 43 | if(fp == NULL) { |
MatsumotoKouki | 0:34d043558630 | 44 | error("Could not open file for write\n"); |
MatsumotoKouki | 0:34d043558630 | 45 | } |
MatsumotoKouki | 0:34d043558630 | 46 | |
MatsumotoKouki | 10:c60fec9b4e1b | 47 | //gps.baud(9600); |
MatsumotoKouki | 0:34d043558630 | 48 | //pc.baud(9600); |
MatsumotoKouki | 0:34d043558630 | 49 | //gps.attach(getGPS(&hokui_n,&tokei_n),Serial::RxIrq); |
MatsumotoKouki | 10:c60fec9b4e1b | 50 | 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 | 0:34d043558630 | 51 | warikomi.attach(&FlightPinDriver,0.5); |
MatsumotoKouki | 0:34d043558630 | 52 | |
MatsumotoKouki | 0:34d043558630 | 53 | |
falconsyunya | 3:aad6f83b618e | 54 | while(1) { |
falconsyunya | 3:aad6f83b618e | 55 | //BMX055部分 |
falconsyunya | 2:28ccb8bdac86 | 56 | bmx.getAcc();//加速度の取得 |
falconsyunya | 2:28ccb8bdac86 | 57 | bmx.getGyro();//角力加速度の取得 |
MatsumotoKouki | 7:e68ead6d3c1a | 58 | bmx.getMag();//地磁気の取得 |
MatsumotoKouki | 7:e68ead6d3c1a | 59 | int a[3],b[3],c[3]; |
falconsyunya | 12:ed1e3282e053 | 60 | for(int i=0; i<3; i++){ |
falconsyunya | 3:aad6f83b618e | 61 | a[i]=bmx.accel[i]; |
falconsyunya | 3:aad6f83b618e | 62 | b[i]=bmx.gyroscope[i]; |
MatsumotoKouki | 7:e68ead6d3c1a | 63 | c[i]=bmx.magnet[i]; |
falconsyunya | 11:2fc33706edd4 | 64 | } |
falconsyunya | 11:2fc33706edd4 | 65 | |
falconsyunya | 3:aad6f83b618e | 66 | //GPS部分 |
falconsyunya | 12:ed1e3282e053 | 67 | int x=0,y=0; |
falconsyunya | 12:ed1e3282e053 | 68 | if(gps.longtitude!=0){x = (gps.longtitude-135.0f)*1000000;} |
falconsyunya | 12:ed1e3282e053 | 69 | if(gps.latitude!=0){y = (gps.latitude-34.0f)*1000000;} |
MatsumotoKouki | 8:c2812fae50df | 70 | |
falconsyunya | 11:2fc33706edd4 | 71 | //SDカードへの書き込み |
falconsyunya | 11:2fc33706edd4 | 72 | 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 | 73 | (a[1]/512)*9.8f,(a[2]/512)*9.8f,(b[0]*125)/2048.0f, |
falconsyunya | 11:2fc33706edd4 | 74 | (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 | 75 | |
falconsyunya | 3:aad6f83b618e | 76 | //IM920部分 |
falconsyunya | 2:28ccb8bdac86 | 77 | //ノード番号(00~FF)を設定.データを送るごとに1増やす. |
falconsyunya | 12:ed1e3282e053 | 78 | uart.printf("STNN %02X\r\n",j); |
falconsyunya | 2:28ccb8bdac86 | 79 | j++; |
falconsyunya | 2:28ccb8bdac86 | 80 | if(j==256){j=0;} |
falconsyunya | 2:28ccb8bdac86 | 81 | |
falconsyunya | 3:aad6f83b618e | 82 | uart.printf("TXDA ");//可変長データ送信コマンド |
falconsyunya | 2:28ccb8bdac86 | 83 | |
falconsyunya | 11:2fc33706edd4 | 84 | uart.printf("%04hX%04hX%04hX",a[0],a[1],a[2]);//加速度の書き出し |
falconsyunya | 11:2fc33706edd4 | 85 | uart.printf("%04hX%04hX%04hX",b[0],b[1],b[2]);//角加速度の書き出し |
MatsumotoKouki | 8:c2812fae50df | 86 | |
falconsyunya | 12:ed1e3282e053 | 87 | uart.printf(" %08X%08X",x,y);//GPS書き出し |
falconsyunya | 2:28ccb8bdac86 | 88 | |
falconsyunya | 2:28ccb8bdac86 | 89 | uart.printf("\r\n"); |
falconsyunya | 2:28ccb8bdac86 | 90 | |
falconsyunya | 2:28ccb8bdac86 | 91 | wait(0.34);//IM920長距離モードの場合,3パケット/sが理論上最大速度. |
MatsumotoKouki | 0:34d043558630 | 92 | } |
MatsumotoKouki | 0:34d043558630 | 93 | } |
MatsumotoKouki | 0:34d043558630 | 94 | |
MatsumotoKouki | 0:34d043558630 | 95 | void FlightPinDriver(){ |
MatsumotoKouki | 0:34d043558630 | 96 | |
MatsumotoKouki | 0:34d043558630 | 97 | if(FlightPin==1){ |
MatsumotoKouki | 8:c2812fae50df | 98 | printf("Flight Pin Worked!!\n\r"); |
MatsumotoKouki | 0:34d043558630 | 99 | warikomi.detach(); |
MatsumotoKouki | 0:34d043558630 | 100 | t.attach(nichrome_ON,3);//ニクロムを作動させるまでの時間 |
MatsumotoKouki | 0:34d043558630 | 101 | } |
MatsumotoKouki | 0:34d043558630 | 102 | |
MatsumotoKouki | 0:34d043558630 | 103 | } |
MatsumotoKouki | 0:34d043558630 | 104 | |
MatsumotoKouki | 0:34d043558630 | 105 | void nichrome_ON(){ |
falconsyunya | 11:2fc33706edd4 | 106 | printf("cut!\n\r"); |
MatsumotoKouki | 0:34d043558630 | 107 | fet1=1; |
MatsumotoKouki | 0:34d043558630 | 108 | wait(2.0);//テグスを切るまでにかかる時間 |
MatsumotoKouki | 0:34d043558630 | 109 | fet1=0; |
MatsumotoKouki | 0:34d043558630 | 110 | t.detach(); |
MatsumotoKouki | 0:34d043558630 | 111 | t.attach(buzzer,6);//ブザー作動までの時間 |
MatsumotoKouki | 0:34d043558630 | 112 | } |
MatsumotoKouki | 0:34d043558630 | 113 | |
MatsumotoKouki | 0:34d043558630 | 114 | void buzzer(){ |
falconsyunya | 11:2fc33706edd4 | 115 | printf("buzzer\n\r"); |
MatsumotoKouki | 0:34d043558630 | 116 | fet2=1; |
MatsumotoKouki | 0:34d043558630 | 117 | } |