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.
Dependents: MMA7660_HelloWorld
Diff: MMA7660.h
- Revision:
- 0:7bc29a9ea016
- Child:
- 1:8997a1b348dd
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MMA7660.h Sun Oct 14 08:02:53 2012 +0000
@@ -0,0 +1,115 @@
+#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_MODE_R 0x07
+
+class MMA7660
+{
+public:
+ /**
+ * 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 );
+
+
+private:
+
+ /**
+ * Writes data to the device, could be private, but public is handy so you can transmit directly to the MPU.
+ *
+ * @param adress - register address to write to
+ * @param data - data to write
+ */
+ void write( char address, char data);
+
+ /**
+ * Read data from the device, could be private, but public is handy so you can transmit directly to the MPU.
+ *
+ * @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