upm  1.7.1
Sensor/Actuator repository for libmraa (v2.0.0)
Public Member Functions | Protected Attributes

API for the MMA7660 I2C 3-Axis Digital Accelerometer. More...

Detailed Description

UPM module for the MMA7660 I2C 3-axis digital accelerometer. This device supports a variety of capabilities, including the generation of interrupts for various conditions, tilt and basic gesture detection, and X/Y/Z-axis measurements of g-forces being applied (up to 1.5g)

This module was tested with the Grove 3-Axis Digital Accelerometer (1.5g)

mma7660.jpg
// Instantiate an MMA7660 on I2C bus 0
upm::MMA7660 accel(MMA7660_DEFAULT_I2C_BUS, MMA7660_DEFAULT_I2C_ADDR);
// place device in standby mode so we can write registers
accel.setModeStandby();
// enable 64 samples per second
accel.setSampleRate(MMA7660_AUTOSLEEP_64);
// place device into active mode
accel.setModeActive();
while (shouldRun) {
float ax, ay, az;
accel.getAcceleration(&ax, &ay, &az);
cout << "Acceleration: x = " << ax << "g y = " << ay << "g z = " << az << "g" << endl;
cout << endl;
upm_delay_us(500000);
}

Public Member Functions

 MMA7660 (int bus, uint8_t address=MMA7660_DEFAULT_I2C_ADDR)
 
virtual ~MMA7660 ()
 
bool writeByte (uint8_t reg, uint8_t byte)
 
uint8_t readByte (uint8_t reg)
 
void getRawValues (int *x, int *y, int *z)
 
void getAcceleration (float *ax, float *ay, float *az)
 
int getVerifiedAxis (MMA7660_REG_T axis)
 
uint8_t getVerifiedTilt ()
 
void setModeActive ()
 
void setModeStandby ()
 
uint8_t tiltBackFront ()
 
uint8_t tiltLandscapePortrait ()
 
bool tiltTap ()
 
bool tiltShake ()
 
void uninstallISR ()
 
bool setInterruptBits (uint8_t ibits)
 
bool setSampleRate (MMA7660_AUTOSLEEP_T sr)
 
std::vector< float > getAcceleration ()
 
std::vector< int > getRawValues ()
 
void installISR (int pin, void(*isr)(void *), void *arg)
 

Protected Attributes

mma7660_context m_mma7660
 

Constructor & Destructor Documentation

MMA7660 ( int  bus,
uint8_t  address = MMA7660_DEFAULT_I2C_ADDR 
)

MMA7660 constructor

Parameters
busI2C bus to use
addressAddress for this sensor; default is 0x55

Here is the caller graph for this function:

~MMA7660 ( )
virtual

MMA7660 destructor

Here is the call graph for this function:

Member Function Documentation

bool writeByte ( uint8_t  reg,
uint8_t  byte 
)

Writes a byte value into a register

Parameters
regRegister location to write into
byteByte to write
Returns
True if successful

Here is the call graph for this function:

uint8_t readByte ( uint8_t  reg)

Reads a byte value from a register

Parameters
regRegister location to read from
Returns
Value in a specified register

Here is the call graph for this function:

void getRawValues ( int *  x,
int *  y,
int *  z 
)

Reads the current value of conversion

Parameters
xReturned x value
yReturned y value
zReturned z value

Here is the call graph for this function:

void getAcceleration ( float *  ax,
float *  ay,
float *  az 
)

Gets the computed acceleration

Parameters
axReturned computed acceleration of the X-axis
ayReturned computed acceleration of the Y-axis
azReturned computed acceleration of the Z-axis

Here is the call graph for this function:

int getVerifiedAxis ( MMA7660_REG_T  axis)

Reads an axis, verifying its validity. The value passed must be one of REG_XOUT, REG_YOUT, or REG_ZOUT.

Parameters
axisAxis to read
Returns
Axis value

Here is the call graph for this function:

uint8_t getVerifiedTilt ( )

Reads the tilt register, verifying its validity

Returns
Tilt value

Here is the call graph for this function:

void setModeActive ( )

Puts the device in the active mode. In this mode, register writes are not allowed. Place the device in the standby mode before attempting to write registers.

Here is the call graph for this function:

void setModeStandby ( )

Puts the device in the standby (power saving) mode. Note: when in the standby mode, there is no valid data in the registers. In addition, the only way to write a register is to put the device in the standby mode.

Here is the call graph for this function:

uint8_t tiltBackFront ( )

Reads tiltBackFront bits

The value returned is one of the MMA7660_TILT_BF_T values

Returns
Bits corresponding to the BackFront tilt status

Here is the call graph for this function:

uint8_t tiltLandscapePortrait ( )

Reads tiltLandscapePortrait bits

The value returned is one of the MMA7660_TILT_LP_T values

Returns
Bits corresponding to the LandscapePortrait tilt status

Here is the call graph for this function:

bool tiltTap ( )

Reads the tiltTap status

Returns
True if a tap is detected

Here is the call graph for this function:

bool tiltShake ( )

Reads the tiltShake status

Returns
True if a shake is detected

Here is the call graph for this function:

void uninstallISR ( )

Uninstalls the previously installed ISR

Here is the call graph for this function:

bool setInterruptBits ( uint8_t  ibits)

Enables interrupt generation based on passed interrupt bits. The bits are a bitmask of the requested MMA7660_INTR_T values. Note: the device must be in the standby mode to set this register.

Parameters
ibitsSets the requested interrupt bits
Returns
True if successful

Here is the call graph for this function:

bool setSampleRate ( MMA7660_AUTOSLEEP_T  sr)

Sets the sampling rate of the sensor. The value supplied must be one of the MMA7660_AUTOSLEEP_T values.

Parameters
srOne of the MMA7660_AUTOSLEEP_T values
Returns
True if successful

Here is the call graph for this function:

std::vector<float> getAcceleration ( )
inline

Reads the current acceleration values. The returned memory is statically allocated and will be overwritten on each call.

Returns
std::vector containing x, y, z.
std::vector<int> getRawValues ( )
inline

Reads the current value of conversion. The returned memory is statically allocated and will be overwritten on each call.

Returns
std::vector containing x, y, z.

Here is the call graph for this function:

void installISR ( int  pin,
void(*)(void *)  isr,
void *  arg 
)

Installs an interrupt service routine (ISR) to be called when an interrupt occurs

Parameters
pinGPIO pin to use as the interrupt pin
isrPointer to a function to be called on interrupt
argPointer to an object to be supplied as an argument to the ISR.

Here is the call graph for this function:

Here is the caller graph for this function:

Collaboration diagram for MMA7660:
Collaboration graph
[legend]

The documentation for this class was generated from the following files: