Comment on page
MMA8491Q Accel Tilt Sensor
This documentation includes installation guidelines and sample code for your hardware.
MMA8491Q is a 3-axis accelerometer with tilt sensing and digital accelerometer functions.
- SCL: D12.
- SDA: D11.
- EN: D6.
- INT X: A3.
- INT Y: A2.
- INT Z: A1.
- POWER: VCC (+3.3V) and GND.
MMA8491Q's technical specifications are as follows:
- Range: ±8 g full-scale range.
- Sensitivity: 14-bit digital output, 1 mg/LSB sensitivity
- Tilt Detection: 3-Axis, 43.5° / 0.688g.
- Output Data Rate: Up to 800Hz.
Turta_AccelTilt_Sensor library is responsible for reading the accelerometer and tilt data.
To use the library on Arduino IDE, add the following #include statement to the top of your sketch.
#include <Turta_AccelTilt_Sensor.h>
Then, create an instance of the Turta_AccelTilt_Sensor class.
Turta_AccelTilt_Sensor accel
Now you're ready to access the library by calling the accel instance.
To initialize the module, call the begin method.
begin()
This method configures the I2C bus and GPIO pins to read sensor data.
Returns the G value of the X axis.
double readXAxis()
Parameters
None. Returns
Double: G Value of the X axis.
Returns the G value of the Y axis.
double readYAxis()
Parameters
None. Returns
Double: G Value of the Y axis.
Returns the G value of the Z axis.
double readZAxis()
Parameters
None. Returns
Double: G Value of the Z axis.
Returns the values of all axes in a single shot.
void readXYZAxis(double x, double y, double z)
Parameters
Double: x out Double: y out Double: z out Returns
None
Returns the tilt state of all axes.
void readTiltState(bool xTilt, bool yTilt, bool zTilt)
Parameters
Bool: xTilt out Bool: yTilt out Bool: zTilt out Returns
None
You can open the examples from Arduino IDE > File > Examples > Examples from Custom Libraries > Turta MKR Sensor Shield > Accel Tilt Sensor. There are two examples of this sensor.
This application demonstrates reading G values applied to X, Y and Z axes.
To run the example:
- 1.Open the Accel sketch from the examples menu.
- 2.Select your Arduino MKR series board from the Tools > Board menu.
- 3.Select your device's COM port from Tools > Port menu.
- 4.Open Serial Monitor from Tools > Serial Monitor.
- 5.Select 115.200 baud from the Serial Monitor's status bar.
- 6.Upload the code to your device.
Sample Code
Accel.ino
#include <Turta_AccelTilt_Sensor.h>
// Create Accel & Tilt Sensor instance.
Turta_AccelTilt_Sensor accel;
void setup() {
// Initialize Accel & Tilt Sensor.
accel.begin();
// Configure serial port.
Serial.begin(115200);
delay(200);
}
void loop() {
// Read X-Axis.
double xAxisG = accel.readXAxis();
Serial.print("X: ");
Serial.println(xAxisG);
// Read Y-Axis.
double yAxisG = accel.readYAxis();
Serial.print("Y: ");
Serial.println(yAxisG);
// Read Z-Axis.
double zAxisG = accel.readZAxis();
Serial.print("Z: ");
Serial.println(zAxisG);
// Read X, Y, Z-Axis at one shot.
double x, y, z;
accel.readXYZAxis(x, y, z);
Serial.print("X: ");
Serial.print(x);
Serial.print(", Y: ");
Serial.print(y);
Serial.print(", Z: ");
Serial.println(z);
// Print an empty line.
Serial.println("");
// Delay 100ms.
delay(100);
}
Result
After the application is uploaded to the device, it writes G forces applied to all axes to the Serial Monitor. The example output should be like this:
X: 0.12
Y: 0.34
Z: 0.92
X: 0.12, Y: 0.34, Z: 0.92
The application runs forever until you clear it from memory.
This application demonstrates reading tilt states of X, Y, and Z axes.
To run the example:
- 1.Open the Tilt sketch from the examples menu.
- 2.Select your Arduino MKR series board from the Tools > Board menu.
- 3.Select your device's COM port from Tools > Port menu.
- 4.Open Serial Monitor from Tools > Serial Monitor.
- 5.Select 115.200 baud from the Serial Monitor's status bar.
- 6.Upload the code to your device.
Sample Code
Tilt.ino
#include <Turta_AccelTilt_Sensor.h>
// Create Accel & Tilt Sensor instance.
Turta_AccelTilt_Sensor accel;
void setup() {
// Initialize Accel & Tilt Sensor.
accel.begin();
// Configure serial port.
Serial.begin(115200);
delay(200);
}
void loop() {
// Read Tilt State.
bool xTilt, yTilt, zTilt;
accel.readTiltState(xTilt, yTilt, zTilt);
Serial.print("X: ");
Serial.print(xTilt ? "Tilt" : "Flat");
Serial.print(", Y: ");
Serial.print(yTilt ? "Tilt" : "Flat");
Serial.print(", Z: ");
Serial.println(zTilt ? "Tilt" : "Flat");
// Delay 100ms.
delay(100);
}
Result
After the application is uploaded to the device, it writes tilt states to the Serial Monitor. The example output should be like this:
X: Flat, Y: Flat, Z: Tilt
X: Flat, Y: Flat, Z: Tilt
X: Flat, Y: Tilt, Z: Flat
X: Flat, Y: Tilt, Z: Flat
The application runs forever until you clear it from memory.
Last modified 4yr ago