5 #ifndef ADAFRUIT_MSA301_H 6 #define ADAFRUIT_MSA301_H 8 #include <Adafruit_BusIO_Register.h> 9 #include <Adafruit_I2CDevice.h> 10 #include <Adafruit_Sensor.h> 16 #define MSA301_I2CADDR_DEFAULT (0x26) 17 #define MSA311_I2CADDR_DEFAULT (0x62) 20 #define MSA301_REG_PARTID 0x01 21 #define MSA301_REG_OUT_X_L 0x02 22 #define MSA301_REG_OUT_X_H 0x03 23 #define MSA301_REG_OUT_Y_L 0x04 24 #define MSA301_REG_OUT_Y_H 0x05 25 #define MSA301_REG_OUT_Z_L 0x06 26 #define MSA301_REG_OUT_Z_H 0x07 27 #define MSA301_REG_MOTIONINT 0x09 28 #define MSA301_REG_DATAINT 0x0A 29 #define MSA301_REG_CLICKSTATUS \ 31 #define MSA301_REG_RESRANGE 0x0F 32 #define MSA301_REG_ODR 0x10 33 #define MSA301_REG_POWERMODE 0x11 34 #define MSA301_REG_INTSET0 0x16 35 #define MSA301_REG_INTSET1 0x17 36 #define MSA301_REG_INTMAP0 0x19 37 #define MSA301_REG_INTMAP1 0x1A 38 #define MSA301_REG_TAPDUR 0x2A 39 #define MSA301_REG_TAPTH 0x2B 140 bool getEvent(sensors_event_t *event);
144 bool activeX =
false,
bool activeY =
false,
145 bool activeZ =
false,
bool newData =
false,
146 bool freefall =
false,
bool orient =
false);
148 bool activity =
false,
bool newData =
false,
149 bool freefall =
false,
bool orient =
false);
155 void setClick(
bool tap_quiet,
bool tap_shock,
172 Adafruit_I2CDevice *i2c_dev;
msa301_powermode_t getPowerMode(void)
Get the power mode.
Definition: Adafruit_MSA301.cpp:181
msa301_powermode_t
Definition: Adafruit_MSA301.h:85
3.9 Hz
Definition: Adafruit_MSA301.h:60
uint8_t getClick(void)
Gets the most recent click detect status register value.
Definition: Adafruit_MSA301.cpp:355
float z_g
The last read X acceleration in 'g'.
Definition: Adafruit_MSA301.h:167
#define MSA311_I2CADDR_DEFAULT
Fixed I2C address.
Definition: Adafruit_MSA301.h:17
150 millis
Definition: Adafruit_MSA301.h:103
New data interrupt.
Definition: Adafruit_MSA301.h:117
500 Hz
Definition: Adafruit_MSA301.h:67
int16_t x
The last read X acceleration in raw units.
Definition: Adafruit_MSA301.h:164
125 Hz
Definition: Adafruit_MSA301.h:65
Single tap interrupt.
Definition: Adafruit_MSA301.h:114
1000 Hz
Definition: Adafruit_MSA301.h:68
void enableInterrupts(bool singletap=false, bool doubletap=false, bool activeX=false, bool activeY=false, bool activeZ=false, bool newData=false, bool freefall=false, bool orient=false)
Set which interrupts are enabled.
Definition: Adafruit_MSA301.cpp:375
Adafruit_MSA301(void)
Instantiates a new MSA301 class.
Definition: Adafruit_MSA301.cpp:32
void read()
Read the XYZ data from the accelerometer and store in the internal x, y and z (and x_g...
Definition: Adafruit_MSA301.cpp:280
15.63 Hz
Definition: Adafruit_MSA301.h:76
100 millis
Definition: Adafruit_MSA301.h:102
bool getEvent(sensors_event_t *event)
Gets the most recent sensor event, Adafruit Unified Sensor format.
Definition: Adafruit_MSA301.cpp:465
1 Hz
Definition: Adafruit_MSA301.h:58
31.25 Hz
Definition: Adafruit_MSA301.h:63
msa301_dataRate_t getDataRate(void)
Gets the data rate for the MSA301 (controls power consumption)
Definition: Adafruit_MSA301.cpp:130
62.5 Hz
Definition: Adafruit_MSA301.h:64
375 millis
Definition: Adafruit_MSA301.h:106
void setRange(msa301_range_t range)
Set the resolution range: +-2g, 4g, 8g, or 16g.
Definition: Adafruit_MSA301.cpp:223
+/- 8g
Definition: Adafruit_MSA301.h:45
msa301_tapduration_t
Definition: Adafruit_MSA301.h:100
12-bit resolution
Definition: Adafruit_MSA301.h:94
8-bit resolution
Definition: Adafruit_MSA301.h:96
msa301_bandwidth_t
Definition: Adafruit_MSA301.h:72
void getSensor(sensor_t *sensor)
Gets the sensor_t device data, Adafruit Unified Sensor format.
Definition: Adafruit_MSA301.cpp:490
15.63 Hz
Definition: Adafruit_MSA301.h:62
bool begin(uint8_t i2c_addr=MSA301_I2CADDR_DEFAULT, TwoWire *wire=&Wire)
Sets up the hardware and initializes I2C.
Definition: Adafruit_MSA301.cpp:61
125 Hz
Definition: Adafruit_MSA301.h:79
500 millis
Definition: Adafruit_MSA301.h:107
void setClick(bool tap_quiet, bool tap_shock, msa301_tapduration_t tapduration, uint8_t tapthresh)
Set the click detection register thresholds.
Definition: Adafruit_MSA301.cpp:326
void setBandwidth(msa301_bandwidth_t bandwidth)
Set the bandwidth, ranges from 1.95Hz to 500Hz.
Definition: Adafruit_MSA301.cpp:195
msa301_resolution_t getResolution(void)
Read the resolution - 8, 10, 12, or 14bits.
Definition: Adafruit_MSA301.cpp:265
Z axis bit.
Definition: Adafruit_MSA301.h:53
3.9 Hz
Definition: Adafruit_MSA301.h:74
Suspend (sleep) mode.
Definition: Adafruit_MSA301.h:88
Y axis bit.
Definition: Adafruit_MSA301.h:52
1.95 Hz
Definition: Adafruit_MSA301.h:73
Low power (slow speed) mode.
Definition: Adafruit_MSA301.h:87
7.81 Hz
Definition: Adafruit_MSA301.h:61
50 millis
Definition: Adafruit_MSA301.h:101
250 millis
Definition: Adafruit_MSA301.h:105
float y_g
The last read Y acceleration in 'g'.
Definition: Adafruit_MSA301.h:167
void setPowerMode(msa301_powermode_t mode)
Set the power mode, MSA301_NORMALMODE, MSA301_LOWPOWERMODE or MSA301_SUSPENDMODE. ...
Definition: Adafruit_MSA301.cpp:165
void setDataRate(msa301_dataRate_t dataRate)
Sets the data rate for the MSA301 (controls power consumption) from 1 Hz to 1000Hz.
Definition: Adafruit_MSA301.cpp:116
+/- 2g (default value)
Definition: Adafruit_MSA301.h:43
7.81 Hz
Definition: Adafruit_MSA301.h:75
X axis bit.
Definition: Adafruit_MSA301.h:51
Definition: Adafruit_MSA301.h:121
void setResolution(msa301_resolution_t resolution)
Set the resolution - 8, 10, 12, or 14bits.
Definition: Adafruit_MSA301.cpp:251
msa301_bandwidth_t getBandwidth(void)
Get the bandwidth.
Definition: Adafruit_MSA301.cpp:209
int16_t y
The last read Y acceleration in raw units.
Definition: Adafruit_MSA301.h:164
1.95 Hz
Definition: Adafruit_MSA301.h:59
31.25 Hz
Definition: Adafruit_MSA301.h:77
msa301_dataRate_t
Definition: Adafruit_MSA301.h:57
Double tap interrupt.
Definition: Adafruit_MSA301.h:115
Normal (high speed) mode.
Definition: Adafruit_MSA301.h:86
200 millis
Definition: Adafruit_MSA301.h:104
void enableAxes(bool x, bool y, bool z)
What axes of the accelerometer we want enabled for reading.
Definition: Adafruit_MSA301.cpp:146
msa301_range_t
Definition: Adafruit_MSA301.h:42
Definition: Adafruit_MSA301.h:178
msa301_axis_t
Definition: Adafruit_MSA301.h:50
void mapInterruptPin(bool singletap=false, bool doubletap=false, bool activity=false, bool newData=false, bool freefall=false, bool orient=false)
Set which interrupts are mapped to the INT pin.
Definition: Adafruit_MSA301.cpp:409
msa301_interrupt_t
Definition: Adafruit_MSA301.h:112
10-bit resolution
Definition: Adafruit_MSA301.h:95
Orientation change interrupt.
Definition: Adafruit_MSA301.h:113
250 Hz
Definition: Adafruit_MSA301.h:66
int16_t z
The last read Z acceleration in raw units.
Definition: Adafruit_MSA301.h:164
500 Hz
Definition: Adafruit_MSA301.h:81
+/- 4g
Definition: Adafruit_MSA301.h:44
62.5 Hz
Definition: Adafruit_MSA301.h:78
msa301_range_t getRange(void)
Read the resolution range: +-2g, 4g, 8g, or 16g.
Definition: Adafruit_MSA301.cpp:237
msa301_resolution_t
Definition: Adafruit_MSA301.h:92
+/- 16g
Definition: Adafruit_MSA301.h:46
Active motion interrupt.
Definition: Adafruit_MSA301.h:116
uint8_t getMotionInterruptStatus(void)
Gets the most recent motion interrupt status register value.
Definition: Adafruit_MSA301.cpp:435
250 Hz
Definition: Adafruit_MSA301.h:80
float x_g
The last read X acceleration in 'g'.
Definition: Adafruit_MSA301.h:167
uint8_t getDataInterruptStatus(void)
Gets the most recent data interrupt status register value.
Definition: Adafruit_MSA301.cpp:450
50 millis700 millis
Definition: Adafruit_MSA301.h:108
#define MSA301_I2CADDR_DEFAULT
Fixed I2C address.
Definition: Adafruit_MSA301.h:16
14-bit resolution
Definition: Adafruit_MSA301.h:93