Adafruit FXAS21002C Gyroscope Library
Adafruit_FXAS21002C.h
Go to the documentation of this file.
1 
20 #ifndef __FXAS21002C_H__
21 #define __FXAS21002C_H__
22 
23 #include <Adafruit_BusIO_Register.h>
24 #include <Adafruit_I2CDevice.h>
25 #include <Adafruit_Sensor.h>
26 #include <Arduino.h>
27 #include <Wire.h>
28 
29 /*=========================================================================
30  I2C ADDRESS/BITS AND SETTINGS
31  -----------------------------------------------------------------------*/
33 // #define FXAS21002C_ADDRESS (0x21) // 0100001
35 #define FXAS21002C_ID (0xD7) // 1101 0111
36 
37 #define GYRO_SENSITIVITY_250DPS (0.0078125F) // Table 35 of datasheet
38 
39 #define GYRO_SENSITIVITY_500DPS (0.015625F)
40 
41 #define GYRO_SENSITIVITY_1000DPS (0.03125F)
42 
43 #define GYRO_SENSITIVITY_2000DPS (0.0625F)
44 /*=========================================================================*/
45 
49 #define GYRO_ODR_800HZ (800.0f)
50 #define GYRO_ODR_400HZ (400.0f)
51 #define GYRO_ODR_200HZ (200.0f)
52 #define GYRO_ODR_100HZ (100.0f)
53 #define GYRO_ODR_50HZ (50.0f)
54 #define GYRO_ODR_25HZ (25.0f)
55 #define GYRO_ODR_12_5HZ (12.5f)
57 /*=========================================================================
58  REGISTERS
59  -----------------------------------------------------------------------*/
60 
63 typedef enum {
72  0x0C,
74  0x0D,
76  0x13,
78  0x14,
80 /*=========================================================================*/
81 
82 /*=========================================================================
83  OPTIONAL SPEED SETTINGS
84  -----------------------------------------------------------------------*/
88 typedef enum {
93 } gyroRange_t;
94 /*=========================================================================*/
95 
96 /*=========================================================================
97  RAW GYROSCOPE DATA TYPE
98  -----------------------------------------------------------------------*/
102 typedef struct gyroRawData_s {
103  int16_t x;
104  int16_t y;
105  int16_t z;
106 } gyroRawData_t;
107 /*=========================================================================*/
108 
109 /**************************************************************************/
113 /**************************************************************************/
114 class Adafruit_FXAS21002C : public Adafruit_Sensor {
115 public:
116  Adafruit_FXAS21002C(int32_t sensorID = -1);
118  bool begin(uint8_t addr = 0x21, TwoWire *wire = &Wire);
119  bool getEvent(sensors_event_t *event);
120  void getSensor(sensor_t *sensor);
121  void standby(boolean standby);
122 
123  void setRange(gyroRange_t range);
124  void setODR(float ODR);
125  gyroRange_t getRange();
126  float getODR();
128 
129 protected:
130  Adafruit_I2CDevice *i2c_dev = NULL;
131 
132 private:
133  bool initialize();
134  gyroRange_t _range;
135  float _ODR;
136  int32_t _sensorID;
137 };
138 
139 #endif
Definition: Adafruit_FXAS21002C.h:91
Definition: Adafruit_FXAS21002C.h:102
Definition: Adafruit_FXAS21002C.h:92
struct gyroRawData_s gyroRawData_t
Definition: Adafruit_FXAS21002C.h:70
Definition: Adafruit_FXAS21002C.h:67
Definition: Adafruit_FXAS21002C.h:66
Definition: Adafruit_FXAS21002C.h:90
Definition: Adafruit_FXAS21002C.h:68
gyroRegisters_t
Definition: Adafruit_FXAS21002C.h:63
int16_t x
Definition: Adafruit_FXAS21002C.h:103
Definition: Adafruit_FXAS21002C.h:89
int16_t z
Definition: Adafruit_FXAS21002C.h:105
Unified sensor driver for the Adafruit FXAS21002C breakout.
Definition: Adafruit_FXAS21002C.h:114
Definition: Adafruit_FXAS21002C.h:65
gyroRawData_t raw
Raw gyroscope values from last sensor read.
Definition: Adafruit_FXAS21002C.h:127
Definition: Adafruit_FXAS21002C.h:77
Definition: Adafruit_FXAS21002C.h:75
Definition: Adafruit_FXAS21002C.h:64
gyroRange_t
Definition: Adafruit_FXAS21002C.h:88
int16_t y
Definition: Adafruit_FXAS21002C.h:104
Definition: Adafruit_FXAS21002C.h:71
Definition: Adafruit_FXAS21002C.h:69
Definition: Adafruit_FXAS21002C.h:73