mpu9250のライブラリ、I2Cを利用。開発段階のため微妙
Diff: mpu9250_i2c.cpp
- Revision:
- 1:6a4c2f84180b
- Parent:
- 0:d36bfb8300a2
--- a/mpu9250_i2c.cpp Mon Jan 09 06:28:04 2017 +0000 +++ b/mpu9250_i2c.cpp Sat Jan 28 19:52:32 2017 +0000 @@ -22,7 +22,7 @@ _nine->frequency(Hz); } bool mpu9250::senserTest(){ - if(readReg(_addr, WHO_AM_I) == 0x71){ + if(readReg(_addr, WHO_AM_I_MPU9250) == 0x71){ return true; } else return false; @@ -106,7 +106,7 @@ setGyro(_500DPS); } -void mpu9250::getAcc(double *acc){ +template<typename T>void mpu9250::getAcc(T *acc){ char data[6]; short sign; readReg(_addr, ACCEL_XOUT_H, data, 6); @@ -117,14 +117,14 @@ sign = ((short)data[4] << 8) | (short)data[5]; acc[2] = (double)sign * acc_coef - acc_offset[2]; } -void mpu9250::getAcc(double *ax, double *ay, double *az){ +template<typename T>void mpu9250::getAcc(T *ax, T *ay, T *az){ double acc[3]; getAcc(acc); *ax = acc[0]; *ay = acc[1]; *az = acc[2]; } -void mpu9250::getGyro(double *gyro){ +template<typename T>void mpu9250::getGyro(T *gyro){ char data[6]; short sign; readReg(_addr, GYRO_XOUT_H, data, 6); @@ -135,14 +135,14 @@ sign = ((short)data[4] << 8) | (short)data[5]; gyro[2] = (double)sign * gyro_coef - gyro_offset[2]; } -void mpu9250::getGyro(double *gx, double *gy, double *gz){ +template<typename T>void mpu9250::getGyro(T *gx, T *gy, T *gz){ double gyro[3]; getGyro(gyro); *gx = gyro[0]; *gy = gyro[1]; *gz = gyro[2]; } -void mpu9250::getMag(double *mag){ +template<typename T>void mpu9250::getMag(T *mag){ char data[8]; short sign; readReg(MAG_ADDR, ST1, data, 8); @@ -153,14 +153,14 @@ sign = ((short)data[6] << 8) | (short)data[5]; mag[2] = (double)sign * -mag_coef - mag_offset[2]; } -void mpu9250::getMag(double *mx, double *my, double *mz){ +template<typename T>void mpu9250::getMag(T *mx, T *my, T *mz){ double mag[3]; getMag(mag); *mx = mag[0]; *my = mag[1]; *mz = mag[2]; } -void mpu9250::getGyroAcc(double *imu){ +template<typename T>void mpu9250::getGyroAcc(T *imu){ char data[14]; short sign; readReg(_addr, ACCEL_XOUT_H, data, 14); @@ -182,4 +182,23 @@ void mpu9250::setAccLPF(A_BAND_WIDTH band){ writeReg(_addr, ACCEL_CONFIG2, band); wait_us(70); -} \ No newline at end of file +} + +template void mpu9250::getAcc<double>(double *ax, double *ay, double *az); +template void mpu9250::getAcc<float>(float *ax, float *ay, float *az); +template void mpu9250::getAcc<double>(double *acc); +template void mpu9250::getAcc<float>(float *acc); + +template void mpu9250::getGyro<double>(double *gx, double *gy, double *gz); +template void mpu9250::getGyro<float>(float *gx, float *gy, float *gz); +template void mpu9250::getGyro<double>(double *gyro); +template void mpu9250::getGyro<float>(float *gyro); + +template void mpu9250::getMag<double>(double *mx, double *my, double *mz); +template void mpu9250::getMag<float>(float *mx, float *my, float *mz); +template void mpu9250::getMag<double>(double *mag); +template void mpu9250::getMag<float>(float *mag); + +template void mpu9250::getGyroAcc<double>(double *imu);//gx,gy,gz,ax,ay,az +template void mpu9250::getGyroAcc<float>(float *imu);//gx,gy,gz,ax,ay,az + \ No newline at end of file