Add mgos_imu module!
This commit is contained in:
36
src/main.c
36
src/main.c
@ -159,6 +159,28 @@ static bool do_mpu9250(struct mgos_mpu9250 *sensor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool do_imu(struct mgos_imu *sensor) {
|
||||
float ax, ay, az;
|
||||
float gx, gy, gz;
|
||||
float mx, my, mz;
|
||||
|
||||
if (!sensor) {
|
||||
return false;
|
||||
}
|
||||
mgos_imu_read(sensor);
|
||||
|
||||
if (mgos_imu_get_accelerometer(sensor, &ax, &ay, &az)) {
|
||||
LOG(LL_INFO, ("type=%s Accel X=%.2f Y=%.2f Z=%.2f", mgos_imu_get_magnetometer_name(sensor), ax, ay, az));
|
||||
}
|
||||
if (mgos_imu_get_gyroscope(sensor, &gx, &gy, &gz)) {
|
||||
LOG(LL_INFO, ("type=%s Gyro X=%.2f Y=%.2f Z=%.2f", mgos_imu_get_magnetometer_name(sensor), gx, gy, gz));
|
||||
}
|
||||
if (mgos_imu_get_magnetometer(sensor, &mx, &my, &mz)) {
|
||||
LOG(LL_INFO, ("type=%s Mag X=%.2f Y=%.2f Z=%.2f", mgos_imu_get_magnetometer_name(sensor), mx, my, mz));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool do_baro(struct mgos_barometer *sensor) {
|
||||
float pressure, temperature;
|
||||
|
||||
@ -185,6 +207,7 @@ int main(int argc, char **argv, char **environ) {
|
||||
struct mgos_ccs811 * ccs811 = NULL;
|
||||
struct mgos_mpu9250 *mpu9250 = NULL;
|
||||
struct mgos_barometer *baro = NULL;
|
||||
struct mgos_imu *imu = NULL;
|
||||
|
||||
if (!mgos_i2c_open(I2CBUSNR)) {
|
||||
LOG(LL_ERROR, ("Cannot open I2C bus %u", I2CBUSNR));
|
||||
@ -211,6 +234,7 @@ int main(int argc, char **argv, char **environ) {
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
if (!(mpu9250 = mgos_mpu9250_create(i2c, 0x68))) {
|
||||
LOG(LL_ERROR, ("Cannot create MPU9250 device"));
|
||||
} else {
|
||||
@ -219,6 +243,17 @@ int main(int argc, char **argv, char **environ) {
|
||||
mgos_mpu9250_set_magnetometer_scale(mpu9250, SCALE_14_BITS);
|
||||
mgos_mpu9250_set_magnetometer_speed(mpu9250, MAG_100_HZ);
|
||||
}
|
||||
*/
|
||||
if (!(imu=mgos_imu_create())) {
|
||||
LOG(LL_ERROR, ("Cannot create IMU"));
|
||||
} else {
|
||||
if (!mgos_imu_create_accelerometer_i2c(imu, i2c, 0x68, ACC_MPU9250))
|
||||
LOG(LL_ERROR, ("Cannot create accelerometer on IMU"));
|
||||
if (!mgos_imu_create_gyroscope_i2c(imu, i2c, 0x68, GYRO_MPU9250))
|
||||
LOG(LL_ERROR, ("Cannot create gyroscope on IMU"));
|
||||
if (!mgos_imu_create_magnetometer_i2c(imu, i2c, 0x0C, MAG_AK8963))
|
||||
LOG(LL_ERROR, ("Cannot create magnetometer on IMU"));
|
||||
}
|
||||
|
||||
if (!(baro=mgos_barometer_create_i2c(i2c, 0x76, BARO_BME280))) {
|
||||
LOG(LL_ERROR, ("Cannot create barometer"));
|
||||
@ -234,6 +269,7 @@ int main(int argc, char **argv, char **environ) {
|
||||
do_ccs811(ccs811);
|
||||
do_mpu9250(mpu9250);
|
||||
do_baro(baro);
|
||||
do_imu(imu);
|
||||
sleep(1);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user