M-G354PDH0 program that utilizes library.
Dependencies: mbed QMC5883L MG354PDH0 SDFileSystem
Revision 0:0fdf17171743, committed 2021-04-28
- Comitter:
- Joeatsumi
- Date:
- Wed Apr 28 07:40:05 2021 +0000
- Commit message:
- M-G354PDH0 program that utilizes library.
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MG354PDH0.lib Wed Apr 28 07:40:05 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Joeatsumi/code/MG354PDH0/#9e92f863fde5
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QMC5883L.lib Wed Apr 28 07:40:05 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/Joeatsumi/code/QMC5883L/#ba5655a87eea
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Wed Apr 28 07:40:05 2021 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/SDFileSystem/#8db0d3b02cec
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Apr 28 07:40:05 2021 +0000 @@ -0,0 +1,123 @@ +/* +EPSONのセンサを試すために組んだ20210423。 +*/ + +#include "mbed.h" +#include "string.h" + +#include "MG354PDH0.h"//慣性センサのライブラリ +#include "QMC5883L.h"//地磁気センサのライブラリ +#include "SDFileSystem.h"//sdカードを操作するためのライブラリ + +/*--------------シリアルポート設定------------------------------*/ +Serial epson_imu(p28, p27); // IMU通信用シリアルポート +Serial pc(USBTX, USBRX); // PC通信用シリアルポート +MG354PDH0 imu(&epson_imu); // IMU +/*----------------------------------------------------------*/ + +/*--------------sdカード用の設定------------------------------*/ +SDFileSystem sd(p5, p6, p7, p8, "sd"); // the pinout on the mbed Cool Components workshop board +/*----------------------------------------------------------*/ + +/*--------------その他IOポート設定-----------------------------*/ +DigitalIn switch_blue(p21);//sdカードへの書き込みを終了させる +/*-----------------------------------------------------------*/ + +/*-----------------------------------------------*/ +/*-------------タイマー関数---------------*/ +Timer passed_time; +/*---------------------------------------*/ +/*-------------------各種の変数-----------------*/ +float gyro_val[3];//角速度の値 +float angle_val[3];//角度の値 + +float acc_val[3];//加速度の値 +float acc_angle[2];//加速度から計算した角度の値 + +int16_t mag_val[3];//地磁気の値 + +float time_new,time_old; +/*---------------------------------------------*/ + + +int main() { + + pc.baud(460800); + + /* + power on + wait 800ms + */ + wait(1.0); + + //compass.init();//地磁気センサの起動 + + imu.power_on_sequence1();//IMUが動作可能かどうかの確認 + imu.power_on_sequence2();//IMUが動作可能かどうかの確認 + imu.UART_CTRL_write();//IMUのボーレートを480600,手動モードへ移行 + imu.move_to_sampling_mode();//サンプリングモードへの移行 + + passed_time.start(); + time_old=passed_time.read(); + + /*----------------------------*/ + /* + mkdir("/sd/IMU_logger", 0777); + + FILE *fp = fopen("/sd/IMU_logger/log.csv", "w"); + + if(fp == NULL) { + error("Could not open file for write\n"); + } + */ + /*-------------------------------------------------------*/ + + pc.printf("Writing start!\r\n"); + + while(1){ + + gyro_val[0]=imu.read_angular_rate_x();//X軸周りの角速度の算出 + gyro_val[1]=imu.read_angular_rate_y();//Y軸周りの角速度の算出 + gyro_val[2]=imu.read_angular_rate_z();//Z軸周りの角速度の算出 + + acc_val[0]=imu.read_acceleration_x();//X軸の加速度の算出 + acc_val[1]=imu.read_acceleration_y();//Y軸の加速度の算出 + acc_val[2]=imu.read_acceleration_z();//Z軸の加速度の算出 + + /* + mag_val[0]=compass.getMagXvalue();//X軸の地磁気の算出 + mag_val[1]=compass.getMagYvalue();//Y軸の地磁気の算出 + mag_val[2]=compass.getMagZvalue();//Z軸の地磁気の算出 + */ + + time_new=passed_time.read();//時間更新 + + //angle_val[0]+=(time_new-time_old)*gyro_val[0];//X軸周りの角度の算出 + //angle_val[1]+=(time_new-time_old)*gyro_val[1];//Y軸周りの角度の算出 + //angle_val[2]+=(time_new-time_old)*gyro_val[2];//Z軸周りの角度の算出 + + pc.printf("%f,",time_new); + pc.printf("%f,%f,%f,",gyro_val[0],gyro_val[1],gyro_val[2]); + //pc.printf("%f:%f:%f\r\n",angle_val[0],angle_val[1],angle_val[2]); + pc.printf("%f,%f,%f\r\n",acc_val[0],acc_val[1],acc_val[2]); + + //fprintf(fp,"%f,%f,%f,%f\r\n",time_new,angle_val[0],angle_val[1],angle_val[2]);//sdファイルに書き込み + //pc.printf("%f,%f,%f,%f\r\n",time_new,angle_val[0],angle_val[1],angle_val[2]);//sdファイルに書き込み + + time_old=time_new; + /* + + if(switch_blue==1){//青いタクトスイッチが押されている事が確認されたら + + //fclose(fp);//sdカードに作ったファイルを閉じる(書き込みをやめる) + pc.printf("Writing finish!"); + break;//while文から離脱 + + }else{} + */ + + wait(0.01); + + }//while 終わり +}//main終わり +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Apr 28 07:40:05 2021 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/mbed_official/code/mbed/builds/e1686b8d5b90 \ No newline at end of file