63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
/*!
|
|
* @file Adafruit_ICM20649.h
|
|
*
|
|
* I2C Driver for the Adafruit ICM20649 6-DoF Wide-Range Accelerometer and
|
|
*Gyro library
|
|
*
|
|
* This is a library for the Adafruit ICM20649 breakout:
|
|
* https://www.adafruit.com/products/4464
|
|
*
|
|
* Adafruit invests time and resources providing this open source code,
|
|
* please support Adafruit and open-source hardware by purchasing products from
|
|
* Adafruit!
|
|
*
|
|
*
|
|
* BSD license (see license.txt)
|
|
*/
|
|
|
|
#ifndef _ADAFRUIT_ICM20649_H
|
|
#define _ADAFRUIT_ICM20649_H
|
|
|
|
#include "Adafruit_ICM20X.h"
|
|
|
|
#define ICM20649_I2CADDR_DEFAULT 0x68 ///< ICM20X default i2c address
|
|
|
|
/** The accelerometer data range */
|
|
typedef enum {
|
|
ICM20649_ACCEL_RANGE_4_G,
|
|
ICM20649_ACCEL_RANGE_8_G,
|
|
ICM20649_ACCEL_RANGE_16_G,
|
|
ICM20649_ACCEL_RANGE_30_G,
|
|
} icm20649_accel_range_t;
|
|
|
|
/** The gyro data range */
|
|
typedef enum {
|
|
ICM20649_GYRO_RANGE_500_DPS,
|
|
ICM20649_GYRO_RANGE_1000_DPS,
|
|
ICM20649_GYRO_RANGE_2000_DPS,
|
|
ICM20649_GYRO_RANGE_4000_DPS,
|
|
} icm20649_gyro_range_t;
|
|
|
|
/*!
|
|
* @brief Class that stores state and functions for interacting with
|
|
* the ST ICM20649 6-DoF Accelerometer and Gyro
|
|
*/
|
|
class Adafruit_ICM20649 : public Adafruit_ICM20X {
|
|
public:
|
|
Adafruit_ICM20649();
|
|
virtual ~Adafruit_ICM20649(){};
|
|
bool begin_I2C(uint8_t i2c_addr = ICM20649_I2CADDR_DEFAULT,
|
|
TwoWire *wire = &Wire, int32_t sensor_id = 0);
|
|
|
|
icm20649_accel_range_t getAccelRange(void);
|
|
void setAccelRange(icm20649_accel_range_t new_accel_range);
|
|
|
|
icm20649_gyro_range_t getGyroRange(void);
|
|
void setGyroRange(icm20649_gyro_range_t new_gyro_range);
|
|
|
|
private:
|
|
void scaleValues(void);
|
|
};
|
|
|
|
#endif
|