MPL sensor
Fork of MPL3115A2 by
Diff: MPL3115A2.h
- Revision:
- 0:cfecfabc5e23
- Child:
- 1:30a04f651efe
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MPL3115A2.h Thu May 23 06:42:15 2013 +0000 @@ -0,0 +1,152 @@ +#ifndef MPL3115A2_H +#define MPL3115A2_H + +#include "mbed.h" + +/* Oversampling */ +#define OVERSAMPLE_RATIO_1 0 +#define OVERSAMPLE_RATIO_2 1 +#define OVERSAMPLE_RATIO_4 2 +#define OVERSAMPLE_RATIO_8 3 +#define OVERSAMPLE_RATIO_16 4 +#define OVERSAMPLE_RATIO_32 5 +#define OVERSAMPLE_RATIO_64 6 +#define OVERSAMPLE_RATIO_128 7 + +/* Mode */ +#define ALTIMETER_MODE 1 +#define BAROMETRIC_MODE 2 + +/** +* MPL3115A2 Altimeter example +* +* @code +* #include "mbed.h" +* #include "MPL3115A2.h" +* +* #define MPL3115A2_I2C_ADDRESS (0x60<<1) +* MPL3115A2 altimeter(PTE0, PTE1, MPL3115A2_I2C_ADDRESS); +* Serial pc(USBTX, USBRX); +* +* int main(void) { +* +* pc.baud( 230400); +* pc.printf("MPL3115A2 Altimeter mode. [%d]\r\n", wigo_sensor1.getDeviceID()); +* +* wigo_sensor1.Oversample_Ratio( OVERSAMPLE_RATIO_32); +* +* while(1) { +* // +* if ( wigo_sensor1.isDataAvailable()) { +* wigo_sensor1.getAllData( &sensor_data[0]); +* pc.printf("\Altitude: %f\tTemperature: %f\r\n", sensor_data[0], sensor_data[1]); +* } +* // +* wait( 0.001); +* } +* +* } +* @endcode +*/ +class MPL3115A2 +{ +public: +/** +* MPL3115A2 constructor +* +* @param sda SDA pin +* @param sdl SCL pin +* @param addr addr of the I2C peripheral +*/ +MPL3115A2(PinName sda, PinName scl, int addr); + +/** +* Get the value of the WHO_AM_I register +* +* @returns DEVICE_ID value == 0xC4 +*/ +uint8_t getDeviceID(); + +/** +* Return the STATUS register value +* +* @returns STATUS register value +*/ +unsigned char getStatus( void); + +/** +* Get the altimeter value +* +* @returns altimeter value as float +*/ +float getAltimeter( void); + +/** +* Get the pressure value +* +* @returns pressure value as float +*/ +float getPressure( void); + +/** +* Get the temperature value +* +* @returns temperature value as float +*/ +float getTemperature( void); + +/** +* Set the Altimeter Mode +* +* @returns none +*/ +void Altimeter_Mode( void); + +/** +* Set the Barometric Mode +* +* @returns none +*/ +void Barometric_Mode( void); + +/** +* Get the altimeter, pressure and temperature values +* +* @param array of float f[3] +* @returns none +*/ +void getAllData( float *f); + +/** Return is there are date available +* +* @return 1 for data available, 0 for no data available +*/ +unsigned int isDataAvailable( void); + +/** Set the oversampling rate value +* +* @param oversampling values. See MPL3115A2.h +* @return none +*/ +void Oversample_Ratio( unsigned int ratio); + +private: + I2C m_i2c; + int m_addr; + unsigned char MPL3115A2_mode; + unsigned char MPL3115A2_oversampling; + + /** Set the device in active mode + */ + void Active( void); + + /** Set the device in standby mode + */ + void Standby( void); + + void readRegs(int addr, uint8_t * data, int len); + void writeRegs(uint8_t * data, int len); + +}; + +#endif