Adafruit MMA8451 Library
Adafruit_MMA8451.h
Go to the documentation of this file.
1 
5 #ifndef _ADAFRUIT_MMA8451_H_
6 #define _ADAFRUIT_MMA8451_H_
7 
8 #if ARDUINO >= 100
9 #include "Arduino.h"
10 #else
11 #include "WProgram.h"
12 #endif
13 
14 #include <Adafruit_I2CDevice.h>
15 
16 #define USE_SENSOR
17 #ifdef USE_SENSOR
19 #include <Adafruit_Sensor.h>
20 #endif
21 
22 /*=========================================================================
23  I2C ADDRESS/BITS
24  -----------------------------------------------------------------------*/
25 #define MMA8451_DEFAULT_ADDRESS \
26  (0x1D)
27 /*=========================================================================*/
28 
29 #define MMA8451_REG_OUT_X_MSB 0x01
30 #define MMA8451_REG_SYSMOD 0x0B
31 #define MMA8451_REG_WHOAMI 0x0D
32 #define MMA8451_REG_XYZ_DATA_CFG \
33  0x0E
34 #define MMA8451_REG_PL_STATUS \
36  0x10
37 #define MMA8451_REG_PL_CFG 0x11
38 #define MMA8451_REG_CTRL_REG1 0x2A
39 #define MMA8451_REG_CTRL_REG2 0x2B
40 #define MMA8451_REG_CTRL_REG4 0x2D
41 #define MMA8451_REG_CTRL_REG5 0x2E
42 
43 //* Different portrait and landscape settings */
45 #define MMA8451_PL_PUF 0
46 #define MMA8451_PL_PUB 1
47 #define MMA8451_PL_PDF 2
48 #define MMA8451_PL_PDB 3
49 #define MMA8451_PL_LRF 4
50 #define MMA8451_PL_LRB 5
51 #define MMA8451_PL_LLF 6
52 #define MMA8451_PL_LLB 7
53 
58 typedef enum {
59  MMA8451_RANGE_8_G = 0b10, // +/- 8g
60  MMA8451_RANGE_4_G = 0b01, // +/- 4g
61  MMA8451_RANGE_2_G = 0b00 // +/- 2g (default value)
63 
65 typedef enum {
66  MMA8451_DATARATE_800_HZ = 0b000, // 800Hz
67  MMA8451_DATARATE_400_HZ = 0b001, // 400Hz
68  MMA8451_DATARATE_200_HZ = 0b010, // 200Hz
69  MMA8451_DATARATE_100_HZ = 0b011, // 100Hz
70  MMA8451_DATARATE_50_HZ = 0b100, // 50Hz
71  MMA8451_DATARATE_12_5_HZ = 0b101, // 12.5Hz
72  MMA8451_DATARATE_6_25HZ = 0b110, // 6.25Hz
73  MMA8451_DATARATE_1_56_HZ = 0b111, // 1.56Hz
74 
75  MMA8451_DATARATE_MASK = 0b111
77 
79 #ifdef USE_SENSOR
80  : public Adafruit_Sensor
81 #endif
82 
85 {
86 public:
91  Adafruit_MMA8451(int32_t id = -1);
92 
99  bool begin(uint8_t addr = MMA8451_DEFAULT_ADDRESS, TwoWire *theWire = &Wire);
100 
101  void read();
102 
103  void
104  setRange(mma8451_range_t range);
106  getRange(void);
107 
112  void setDataRate(mma8451_dataRate_t dataRate);
114 
115 #ifdef USE_SENSOR
116 
120  bool getEvent(sensors_event_t *event);
124  void getSensor(sensor_t *sensor);
125 #endif
126 
127  uint8_t getOrientation(void);
128 
130  //* X, Y, and Z values */
131  int16_t x, y, z;
134  //* X, Y, and Z acceleration values */
135  float x_g, y_g, z_g;
137 
143  void writeRegister8(uint8_t reg, uint8_t value);
144 
145 protected:
151  uint8_t readRegister8(uint8_t reg);
152 
153 private:
154  int32_t _sensorID;
155  Adafruit_I2CDevice *i2c_dev = NULL;
156 };
157 
158 #endif
Adafruit_MMA8451(int32_t id=-1)
Adafruit MMA8451 object.
Definition: Adafruit_MMA8451.cpp:60
mma8451_dataRate_t getDataRate(void)
Gets the data rate for the MMA8451 (controls power consumption)
Definition: Adafruit_MMA8451.cpp:194
void setRange(mma8451_range_t range)
Sets the g range for the accelerometer.
Definition: Adafruit_MMA8451.cpp:159
uint8_t readRegister8(uint8_t reg)
Reads from 8 bit register.
Definition: Adafruit_MMA8451.cpp:49
#define USE_SENSOR
without sensor library.
Definition: Adafruit_MMA8451.h:16
mma8451_dataRate_t
Definition: Adafruit_MMA8451.h:65
mma8451_range_t
Different range settings.
Definition: Adafruit_MMA8451.h:58
#define MMA8451_DEFAULT_ADDRESS
Default MMA8451 I2C address, if A is GND, its 0x1C.
Definition: Adafruit_MMA8451.h:25
void read()
Reads data from the sensor.
Definition: Adafruit_MMA8451.cpp:112
void getSensor(sensor_t *sensor)
Gets the sensor_t data.
Definition: Adafruit_MMA8451.cpp:229
uint8_t getOrientation(void)
Read the orientation: Portrait/Landscape + Up/Down/Left/Right + Front/Back.
Definition: Adafruit_MMA8451.cpp:150
bool begin(uint8_t addr=MMA8451_DEFAULT_ADDRESS, TwoWire *theWire=&Wire)
Connects with the MMA8451.
Definition: Adafruit_MMA8451.cpp:67
Adafruit MMA8451 compount.
Definition: Adafruit_MMA8451.h:78
mma8451_range_t getRange(void)
Gets the g range for the accelerometer.
Definition: Adafruit_MMA8451.cpp:171
void setDataRate(mma8451_dataRate_t dataRate)
Sets the data rate for the MMA8451 (controls power consumption)
Definition: Adafruit_MMA8451.cpp:181
bool getEvent(sensors_event_t *event)
Gets the most recent sensor event.
Definition: Adafruit_MMA8451.cpp:205
void writeRegister8(uint8_t reg, uint8_t value)
Writes to 8 bit register.
Definition: Adafruit_MMA8451.cpp:39