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;
|
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) {
|
static bool do_baro(struct mgos_barometer *sensor) {
|
||||||
float pressure, temperature;
|
float pressure, temperature;
|
||||||
|
|
||||||
@ -185,6 +207,7 @@ int main(int argc, char **argv, char **environ) {
|
|||||||
struct mgos_ccs811 * ccs811 = NULL;
|
struct mgos_ccs811 * ccs811 = NULL;
|
||||||
struct mgos_mpu9250 *mpu9250 = NULL;
|
struct mgos_mpu9250 *mpu9250 = NULL;
|
||||||
struct mgos_barometer *baro = NULL;
|
struct mgos_barometer *baro = NULL;
|
||||||
|
struct mgos_imu *imu = NULL;
|
||||||
|
|
||||||
if (!mgos_i2c_open(I2CBUSNR)) {
|
if (!mgos_i2c_open(I2CBUSNR)) {
|
||||||
LOG(LL_ERROR, ("Cannot open I2C bus %u", 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))) {
|
if (!(mpu9250 = mgos_mpu9250_create(i2c, 0x68))) {
|
||||||
LOG(LL_ERROR, ("Cannot create MPU9250 device"));
|
LOG(LL_ERROR, ("Cannot create MPU9250 device"));
|
||||||
} else {
|
} 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_scale(mpu9250, SCALE_14_BITS);
|
||||||
mgos_mpu9250_set_magnetometer_speed(mpu9250, MAG_100_HZ);
|
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))) {
|
if (!(baro=mgos_barometer_create_i2c(i2c, 0x76, BARO_BME280))) {
|
||||||
LOG(LL_ERROR, ("Cannot create barometer"));
|
LOG(LL_ERROR, ("Cannot create barometer"));
|
||||||
@ -234,6 +269,7 @@ int main(int argc, char **argv, char **environ) {
|
|||||||
do_ccs811(ccs811);
|
do_ccs811(ccs811);
|
||||||
do_mpu9250(mpu9250);
|
do_mpu9250(mpu9250);
|
||||||
do_baro(baro);
|
do_baro(baro);
|
||||||
|
do_imu(imu);
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user