地磁気センサーのプログラム

Dependencies:   mbed

Committer:
minanao
Date:
Wed Oct 20 08:15:44 2021 +0000
Revision:
0:af969b92a87c
gm_sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
minanao 0:af969b92a87c 1 #include "mbed.h"
minanao 0:af969b92a87c 2 #include "MPU9250.h"
minanao 0:af969b92a87c 3
minanao 0:af969b92a87c 4
minanao 0:af969b92a87c 5
minanao 0:af969b92a87c 6 MPU9250 mpu9250(D4, D5); // SDA, SCL
minanao 0:af969b92a87c 7
minanao 0:af969b92a87c 8 Serial pc(USBTX, USBRX, 115200);
minanao 0:af969b92a87c 9
minanao 0:af969b92a87c 10 volatile bool interrupt_flag = false;
minanao 0:af969b92a87c 11
minanao 0:af969b92a87c 12 void detect_shock(void)
minanao 0:af969b92a87c 13 {
minanao 0:af969b92a87c 14 interrupt_flag = true;
minanao 0:af969b92a87c 15 }
minanao 0:af969b92a87c 16
minanao 0:af969b92a87c 17 int main()
minanao 0:af969b92a87c 18 {
minanao 0:af969b92a87c 19
minanao 0:af969b92a87c 20
minanao 0:af969b92a87c 21 mpu9250.resetMPU9250();
minanao 0:af969b92a87c 22 mpu9250.setWakeOnMotion();
minanao 0:af969b92a87c 23
minanao 0:af969b92a87c 24 while(1) {
minanao 0:af969b92a87c 25 if (interrupt_flag) {
minanao 0:af969b92a87c 26
minanao 0:af969b92a87c 27 pc.printf("detect\r\n");
minanao 0:af969b92a87c 28 wait_ms(1000);
minanao 0:af969b92a87c 29 interrupt_flag = false;
minanao 0:af969b92a87c 30 }
minanao 0:af969b92a87c 31
minanao 0:af969b92a87c 32 /* get accell data*/
minanao 0:af969b92a87c 33 int16_t acc[3];
minanao 0:af969b92a87c 34 mpu9250.readAccelData(acc);
minanao 0:af969b92a87c 35 float acc_f[3];
minanao 0:af969b92a87c 36 for (int i = 0; i < 3; ++i)
minanao 0:af969b92a87c 37 acc_f[i] = float(acc[i]) * mpu9250.getAres();
minanao 0:af969b92a87c 38
minanao 0:af969b92a87c 39 /* get temperature */
minanao 0:af969b92a87c 40 float temperature = ((float) mpu9250.readTempData()) / 333.87 + 21.0;
minanao 0:af969b92a87c 41
minanao 0:af969b92a87c 42 /* get gyro data*/
minanao 0:af969b92a87c 43 int16_t gyro[3];
minanao 0:af969b92a87c 44 mpu9250.readGyroData(gyro);
minanao 0:af969b92a87c 45 float gyro_f[3];
minanao 0:af969b92a87c 46 for (int i = 0; i < 3; ++i)
minanao 0:af969b92a87c 47 gyro_f[i] = float(gyro[i]) * mpu9250.getGres();
minanao 0:af969b92a87c 48
minanao 0:af969b92a87c 49
minanao 0:af969b92a87c 50 /* get mag data*/
minanao 0:af969b92a87c 51 int16_t mag[3];
minanao 0:af969b92a87c 52 mpu9250.readMagData(mag);
minanao 0:af969b92a87c 53 float mag_f[3];
minanao 0:af969b92a87c 54 for (int i = 0; i < 3; ++i)
minanao 0:af969b92a87c 55 mag_f[i] = float(mag[i]) * mpu9250.getMres();
minanao 0:af969b92a87c 56
minanao 0:af969b92a87c 57
minanao 0:af969b92a87c 58
minanao 0:af969b92a87c 59
minanao 0:af969b92a87c 60
minanao 0:af969b92a87c 61
minanao 0:af969b92a87c 62
minanao 0:af969b92a87c 63 /* serial */
minanao 0:af969b92a87c 64
minanao 0:af969b92a87c 65 pc.printf("ax:%3.3f\t", acc_f[0]);
minanao 0:af969b92a87c 66 pc.printf("ay:%3.3f\t", acc_f[1]);
minanao 0:af969b92a87c 67 pc.printf("az:%3.3f\t\n", acc_f[2]);
minanao 0:af969b92a87c 68 pc.printf("mx:%3.3f\t", mag_f[0]);
minanao 0:af969b92a87c 69 pc.printf("my:%3.3f\t", mag_f[1]);
minanao 0:af969b92a87c 70 pc.printf("mz:%3.3f\t\n", mag_f[2]);
minanao 0:af969b92a87c 71 pc.printf("gx:%3.3f\t", gyro_f[0]);
minanao 0:af969b92a87c 72 pc.printf("gy:%3.3f\t", gyro_f[1]);
minanao 0:af969b92a87c 73 pc.printf("gz:%3.3f\t\n", gyro_f[2]);
minanao 0:af969b92a87c 74 pc.printf("temp:%3.3f\t", temperature);
minanao 0:af969b92a87c 75
minanao 0:af969b92a87c 76 pc.printf("\n\n---------------------------\r\n");
minanao 0:af969b92a87c 77
minanao 0:af969b92a87c 78 wait_ms(100);
minanao 0:af969b92a87c 79 }
minanao 0:af969b92a87c 80 }