SSLM1 / Mbed 2 deprecated 4_sensor-Integration-function2

Dependencies:   mbed 2_P7100 2_EEPROM 2_MPU9250

Committer:
rary
Date:
Fri Jul 10 16:17:22 2020 +0000
Revision:
1:f6528bed0dce
Parent:
0:f282852e22f1
republish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rary 0:f282852e22f1 1 #include "mbed.h"
rary 0:f282852e22f1 2 #include "EEPROM.h"
rary 0:f282852e22f1 3 #include "LPS33HW.h"
rary 0:f282852e22f1 4 #include "P7100.h"
rary 0:f282852e22f1 5 #include "MPU9250.h"
rary 0:f282852e22f1 6
rary 0:f282852e22f1 7 Timer t; //時間計測
rary 0:f282852e22f1 8 Serial pc(USBTX, USBRX);
rary 0:f282852e22f1 9 LPS33HW lps(p9, p10);
rary 0:f282852e22f1 10 EEPROM rom(p9, p10);
rary 0:f282852e22f1 11 MPU9250 mpu(p9, p10);
rary 0:f282852e22f1 12 P7100 p7100(p5, p6, p7, p8);
rary 0:f282852e22f1 13
rary 0:f282852e22f1 14 void sensor_get_save(int); //自作関数プロトタイプ宣言
rary 0:f282852e22f1 15
rary 0:f282852e22f1 16 int pointerAddress = 0; //EEPROM保存アドレス
rary 0:f282852e22f1 17
rary 0:f282852e22f1 18 //main
rary 0:f282852e22f1 19 int main()
rary 0:f282852e22f1 20 {
rary 0:f282852e22f1 21 char data_read[128];
rary 0:f282852e22f1 22 pc.baud(460800); //ボーレート変更
rary 1:f6528bed0dce 23 char ADDR; //アドレス
rary 0:f282852e22f1 24
rary 0:f282852e22f1 25 t.start(); //timer Start
rary 0:f282852e22f1 26
rary 0:f282852e22f1 27 pc.printf("Start!");
rary 0:f282852e22f1 28
rary 1:f6528bed0dce 29 //Setup
rary 0:f282852e22f1 30 lps.start(1); //気圧センサスタート
rary 0:f282852e22f1 31 lps.start(1); //気圧センサスタート
rary 1:f6528bed0dce 32 wait(0.1);
rary 0:f282852e22f1 33 mpu.start(); //MPU9250 start&setup
rary 0:f282852e22f1 34 mpu.accelsetup(3);
rary 0:f282852e22f1 35 mpu.gyrosetup(3);
rary 0:f282852e22f1 36 mpu.AKsetup(1);
rary 1:f6528bed0dce 37 wait(0.2);
rary 1:f6528bed0dce 38
rary 0:f282852e22f1 39
rary 1:f6528bed0dce 40 //data get&save
rary 1:f6528bed0dce 41 for(int n = 0; n <= 4000; n++) {
rary 0:f282852e22f1 42 sensor_get_save(n);
rary 0:f282852e22f1 43 wait_ms(0);
rary 0:f282852e22f1 44 }
rary 0:f282852e22f1 45
rary 1:f6528bed0dce 46
rary 0:f282852e22f1 47 //read the data
rary 0:f282852e22f1 48 pointerAddress = 0;
rary 0:f282852e22f1 49 pc.printf("Data read\r\n");
rary 1:f6528bed0dce 50
rary 1:f6528bed0dce 51 for(int n = 0; n <= 4000; n++) {
rary 1:f6528bed0dce 52 ADDR = rom.ref_ADDR(n);
rary 0:f282852e22f1 53 rom.read(ADDR, pointerAddress, data_read, 128);
rary 0:f282852e22f1 54 wait_ms(5);
rary 1:f6528bed0dce 55 pc.printf("%d, %s", pointerAddress, data_read);
rary 1:f6528bed0dce 56
rary 1:f6528bed0dce 57 if(pointerAddress == 1000*128){pointerAddress = -128;}
rary 0:f282852e22f1 58 pointerAddress = pointerAddress + 128; //アドレスずらし
rary 0:f282852e22f1 59 memset(data_read, '\0', 128 ); //初期化
rary 0:f282852e22f1 60 }
rary 0:f282852e22f1 61
rary 1:f6528bed0dce 62
rary 0:f282852e22f1 63 pc.printf("Finish");
rary 0:f282852e22f1 64 }
rary 0:f282852e22f1 65
rary 1:f6528bed0dce 66
rary 1:f6528bed0dce 67
rary 0:f282852e22f1 68 void sensor_get_save(int n)
rary 0:f282852e22f1 69 {
rary 0:f282852e22f1 70 char s[64]; //データ取得配列
rary 0:f282852e22f1 71
rary 0:f282852e22f1 72 float accel[3], gyro[3]; //MPU9250data
rary 0:f282852e22f1 73 float AX, AY, AZ, GX, GY, GZ; //MPU9250data
rary 0:f282852e22f1 74
rary 0:f282852e22f1 75 float T = t.read(); //時刻データ取得
rary 0:f282852e22f1 76 float P = lps.data_read(); //気圧データ取得
rary 0:f282852e22f1 77 float v = p7100.v_read(); //電圧取得
rary 0:f282852e22f1 78 float tp = 0.25 * v - 0.125; //タンク圧力換算
rary 0:f282852e22f1 79
rary 0:f282852e22f1 80 mpu.accel_read(3, accel);
rary 0:f282852e22f1 81 mpu.gyro_read(3, gyro);
rary 0:f282852e22f1 82 AX = accel[0];
rary 0:f282852e22f1 83 AY = accel[1];
rary 0:f282852e22f1 84 AZ = accel[2];
rary 0:f282852e22f1 85 GX = gyro[0];
rary 0:f282852e22f1 86 GY = gyro[1];
rary 0:f282852e22f1 87 GZ = gyro[2];
rary 0:f282852e22f1 88
rary 0:f282852e22f1 89 sprintf(s, "%8.3f %8.3f %6.3f %5.3f %5.2f %5.2f %5.2f %5.2f %5.2f\r\n", T, P, tp, AX, AY, AZ, GX, GY, GZ); //floatからchar*へ変換
rary 0:f282852e22f1 90
rary 1:f6528bed0dce 91 rom.write_high(pointerAddress, s, 64); // write tha data
rary 0:f282852e22f1 92 pointerAddress = pointerAddress + 64; //アドレスずらし
rary 0:f282852e22f1 93
rary 1:f6528bed0dce 94 pc.printf("%d, %s\r\n", n, s); //check用
rary 0:f282852e22f1 95
rary 0:f282852e22f1 96 memset(s, '\0', 64 ); //初期化
rary 0:f282852e22f1 97 }