Adafruit ADXL345 Arduino Library
Adafruit_ADXL345_U.h
Go to the documentation of this file.
1 /**************************************************************************/
25 /**************************************************************************/
26 
27 #ifndef Adafruit_ADXL345_h
28 #define Adafruit_ADXL345_h
29 
30 #if ARDUINO >= 100
31 #include "Arduino.h"
32 #else
33 #include "WProgram.h"
34 #endif
35 
36 #include <Adafruit_I2CDevice.h>
37 #include <Adafruit_SPIDevice.h>
38 #include <Adafruit_Sensor.h>
39 
40 /*=========================================================================
41  I2C ADDRESS/BITS
42  -----------------------------------------------------------------------*/
43 #define ADXL345_DEFAULT_ADDRESS (0x53)
44 /*=========================================================================*/
45 
46 /*=========================================================================
47  REGISTERS
48  -----------------------------------------------------------------------*/
49 #define ADXL345_REG_DEVID (0x00)
50 #define ADXL345_REG_THRESH_TAP (0x1D)
51 #define ADXL345_REG_OFSX (0x1E)
52 #define ADXL345_REG_OFSY (0x1F)
53 #define ADXL345_REG_OFSZ (0x20)
54 #define ADXL345_REG_DUR (0x21)
55 #define ADXL345_REG_LATENT (0x22)
56 #define ADXL345_REG_WINDOW (0x23)
57 #define ADXL345_REG_THRESH_ACT (0x24)
58 #define ADXL345_REG_THRESH_INACT (0x25)
59 #define ADXL345_REG_TIME_INACT (0x26)
60 #define ADXL345_REG_ACT_INACT_CTL \
61  (0x27)
62 #define ADXL345_REG_THRESH_FF (0x28)
63 #define ADXL345_REG_TIME_FF (0x29)
64 #define ADXL345_REG_TAP_AXES (0x2A)
65 #define ADXL345_REG_ACT_TAP_STATUS (0x2B)
66 #define ADXL345_REG_BW_RATE (0x2C)
67 #define ADXL345_REG_POWER_CTL (0x2D)
68 #define ADXL345_REG_INT_ENABLE (0x2E)
69 #define ADXL345_REG_INT_MAP (0x2F)
70 #define ADXL345_REG_INT_SOURCE (0x30)
71 #define ADXL345_REG_DATA_FORMAT (0x31)
72 #define ADXL345_REG_DATAX0 (0x32)
73 #define ADXL345_REG_DATAX1 (0x33)
74 #define ADXL345_REG_DATAY0 (0x34)
75 #define ADXL345_REG_DATAY1 (0x35)
76 #define ADXL345_REG_DATAZ0 (0x36)
77 #define ADXL345_REG_DATAZ1 (0x37)
78 #define ADXL345_REG_FIFO_CTL (0x38)
79 #define ADXL345_REG_FIFO_STATUS (0x39)
80 /*=========================================================================*/
81 
82 /*=========================================================================
83  REGISTERS
84  -----------------------------------------------------------------------*/
85 #define ADXL345_MG2G_MULTIPLIER (0.004)
86 /*=========================================================================*/
87 
92 typedef enum {
109  0b0000
110 } dataRate_t;
111 
116 typedef enum {
121 } range_t;
122 
127 class Adafruit_ADXL345_Unified : public Adafruit_Sensor {
128 public:
129  Adafruit_ADXL345_Unified(int32_t sensorID = -1);
130  Adafruit_ADXL345_Unified(uint8_t clock, uint8_t miso, uint8_t mosi,
131  uint8_t cs, int32_t sensorID = -1);
133 
134  bool begin(uint8_t addr = ADXL345_DEFAULT_ADDRESS);
135  void setRange(range_t range);
136  range_t getRange(void);
137  void setDataRate(dataRate_t dataRate);
138  dataRate_t getDataRate(void);
139  bool getEvent(sensors_event_t *);
140  void getSensor(sensor_t *);
141 
142  uint8_t getDeviceID(void);
143  void writeRegister(uint8_t reg, uint8_t value);
144  uint8_t readRegister(uint8_t reg);
145  int16_t read16(uint8_t reg);
146 
147  int16_t getX(void), getY(void), getZ(void);
148 
149 private:
150  Adafruit_I2CDevice *i2c_dev = NULL;
151  Adafruit_SPIDevice *spi_dev = NULL;
152 
153  int32_t _sensorID;
154  range_t _range;
155 };
156 
157 #endif // Adafruit_ADXL345_h
100Hz Bandwidth 140�A IDD
Definition: Adafruit_ADXL345_U.h:97
Adafruit_ADXL345_Unified(int32_t sensorID=-1)
Instantiates a new ADXL345 class.
Definition: Adafruit_ADXL345_U.cpp:123
0.20Hz Bandwidth 23�A IDD
Definition: Adafruit_ADXL345_U.h:106
1600Hz Bandwidth 140�A IDD
Definition: Adafruit_ADXL345_U.h:93
range_t getRange(void)
Gets the g range for the accelerometer.
Definition: Adafruit_ADXL345_U.cpp:209
void getSensor(sensor_t *)
Fill a sensor_t struct with information about the sensor.
Definition: Adafruit_ADXL345_U.cpp:271
int16_t getY(void)
Gets the most recent Y axis value.
Definition: Adafruit_ADXL345_U.cpp:103
0.39Hz Bandwidth 23�A IDD
Definition: Adafruit_ADXL345_U.h:105
int16_t getZ(void)
Gets the most recent Z axis value.
Definition: Adafruit_ADXL345_U.cpp:113
12.5Hz Bandwidth 60�A IDD
Definition: Adafruit_ADXL345_U.h:100
+/- 8g
Definition: Adafruit_ADXL345_U.h:118
int16_t read16(uint8_t reg)
Reads two bytes from the specified register.
Definition: Adafruit_ADXL345_U.cpp:65
200Hz Bandwidth 140�A IDD
Definition: Adafruit_ADXL345_U.h:96
void setDataRate(dataRate_t dataRate)
Sets the data rate for the ADXL345 (controls power consumption)
Definition: Adafruit_ADXL345_U.cpp:220
6.25Hz Bandwidth 50�A IDD
Definition: Adafruit_ADXL345_U.h:101
void writeRegister(uint8_t reg, uint8_t value)
Writes one byte to the specified destination register.
Definition: Adafruit_ADXL345_U.cpp:31
dataRate_t getDataRate(void)
Gets the data rate for the ADXL345 (controls power consumption)
Definition: Adafruit_ADXL345_U.cpp:232
int16_t getX(void)
Gets the most recent X axis value.
Definition: Adafruit_ADXL345_U.cpp:93
void setRange(range_t range)
Sets the g range for the accelerometer.
Definition: Adafruit_ADXL345_U.cpp:185
25Hz Bandwidth 90�A IDD
Definition: Adafruit_ADXL345_U.h:99
1.56Hz Bandwidth 40�A IDD
Definition: Adafruit_ADXL345_U.h:103
range_t
Used with register 0x31 (ADXL345_REG_DATA_FORMAT) to set g range.
Definition: Adafruit_ADXL345_U.h:116
0.05Hz Bandwidth 23�A IDD (default value)
Definition: Adafruit_ADXL345_U.h:108
50Hz Bandwidth 140�A IDD
Definition: Adafruit_ADXL345_U.h:98
0.78Hz Bandwidth 34�A IDD
Definition: Adafruit_ADXL345_U.h:104
+/- 4g
Definition: Adafruit_ADXL345_U.h:119
#define ADXL345_DEFAULT_ADDRESS
Assumes ALT address pin low.
Definition: Adafruit_ADXL345_U.h:43
bool begin(uint8_t addr=ADXL345_DEFAULT_ADDRESS)
Setups the HW (reads coefficients values, etc.)
Definition: Adafruit_ADXL345_U.cpp:154
Class to interact with the ADXL345 accelerometer.
Definition: Adafruit_ADXL345_U.h:127
400Hz Bandwidth 140�A IDD
Definition: Adafruit_ADXL345_U.h:95
+/- 2g (default value)
Definition: Adafruit_ADXL345_U.h:120
3.13Hz Bandwidth 45�A IDD
Definition: Adafruit_ADXL345_U.h:102
800Hz Bandwidth 90�A IDD
Definition: Adafruit_ADXL345_U.h:94
uint8_t readRegister(uint8_t reg)
Reads one byte from the specified register.
Definition: Adafruit_ADXL345_U.cpp:47
0.10Hz Bandwidth 23�A IDD
Definition: Adafruit_ADXL345_U.h:107
dataRate_t
Used with register 0x2C (ADXL345_REG_BW_RATE) to set bandwidth.
Definition: Adafruit_ADXL345_U.h:92
bool getEvent(sensors_event_t *)
Gets the most recent sensor event.
Definition: Adafruit_ADXL345_U.cpp:243
+/- 16g
Definition: Adafruit_ADXL345_U.h:117
uint8_t getDeviceID(void)
Reads the device ID (can be used to check connection)
Definition: Adafruit_ADXL345_U.cpp:82