Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of MMA7660 by
MMA7660.h
- Committer:
- Sissors
- Date:
- 2012-10-16
- Revision:
- 1:8997a1b348dd
- Parent:
- 0:7bc29a9ea016
- Child:
- 2:a8e20db7901e
File content as of revision 1:8997a1b348dd:
#include "mbed.h" #ifndef MMA7660_H #define MMA7660_H #define MMA7660_ADDRESS 0x98 #define MMA7660_SENSITIVITY 21.33 #define MMA7660_XOUT_R 0x00 #define MMA7660_YOUT_R 0x01 #define MMA7660_ZOUT_R 0x02 #define MMA7660_TILT_R 0x03 #define MMA7660_INT_R 0x06 #define MMA7660_MODE_R 0x07 #define MMA7660_SR_R 0x08 class MMA7660 { public: /** * The 6 different orientations and unknown * * Up & Down = X-axis * Right & Left = Y-axis * Back & Front = Z-axis * */ enum Orientation{Up, Down, Right, Left, Back, Front, Unknown}; /** * Creates a new MMA7660 object * * @param sda - I2C data pin * @param scl - I2C clock pin * @param interrupt - Interrupt pin (default = NC) */ MMA7660(PinName sda, PinName scl, PinName interrupt = NC); /** * Tests if communication is possible with the MMA7660 * * Because the MMA7660 lacks a WHO_AM_I register, this function can only check * if there is an I2C device that responds to the MMA7660 address * * @param return - true for successfull connection, false for no connection */ bool testConnection( void ); /** * Sets the active state of the MMA7660 * * Note: This is unrelated to awake/sleep mode * * @param state - true for active, false for standby */ void setActive( bool state); /** * Reads acceleration data from the sensor * * When the parameter is a pointer to an integer array it will be the raw data. * When it is a pointer to a float array it will be the acceleration in g's * * @param data - pointer to array with length 3 where the acceleration data will be stores, X-Y-Z */ void readData( int *data); void readData( float *data); /** * Get X-data * * @param return - X-acceleration in g's */ float getX( void ); /** * Get Y-data * * @param return - Y-acceleration in g's */ float getY( void ); /** * Get Z-data * * @param return - Z-acceleration in g's */ float getZ( void ); /** * Sets the active samplerate * * The entered samplerate will be rounded to nearest supported samplerate. * Supported samplerates are: 120 - 64 - 32 - 16 - 8 - 4 - 2 - 1 samples/second. * * @param samplerate - the samplerate that will be set */ void setSampleRate(int samplerate); /** * Returns which side is pointing down * * @param return - Orientation which is closest to down */ Orientation getGlobalOrientation( void ); /** * Returns if it is on its front, back, or unknown side * * This is read from MMA7760s registers, page 12 of datasheet * * @param return - Front, Back or Unknown orientation */ Orientation getSide( void ); /** * Returns if it is on it left, right, down or up side * * This is read from MMA7760s registers, page 12 of datasheet * * @param return - Left, Right, Down, Up or Unknown orientation */ Orientation getOrientation ( void ); /** * Returns if since last check there has been a tap * * @param return - bool that is true when a tap has been detected */ bool isTapped( void ); private: /** * Writes data to the device * * @param adress - register address to write to * @param data - data to write */ void write( char address, char data); /** * Read data from the device * * @param adress - register address to write to * @return - data from the register specified by RA */ char read( char adress); /** * Read multiple regigsters from the device, more efficient than using multiple normal reads. * * @param adress - register address to write to * @param length - number of bytes to read * @param data - pointer where the data needs to be written to */ void read( char adress, char *data, int length); /** * Reads single axis */ float getSingle(int number); I2C _i2c; bool active; PinName _interrupt; float samplerate; }; #endif