Adafruit MPL3115A2 Arduino Library
Adafruit_MPL3115A2.h
Go to the documentation of this file.
1 
21 #ifndef __MPL3115A2__
22 #define __MPL3115A2__
23 
24 #include "Arduino.h"
25 #include <Adafruit_I2CDevice.h>
26 
27 #define MPL3115A2_ADDRESS (0x60)
28 
29 
30 enum {
31  MPL3115A2_REGISTER_STATUS = (0x00),
32 
33  MPL3115A2_REGISTER_PRESSURE_MSB = (0x01),
34  MPL3115A2_REGISTER_PRESSURE_CSB = (0x02),
35  MPL3115A2_REGISTER_PRESSURE_LSB = (0x03),
36 
37  MPL3115A2_REGISTER_TEMP_MSB = (0x04),
38  MPL3115A2_REGISTER_TEMP_LSB = (0x05),
39 
40  MPL3115A2_REGISTER_DR_STATUS = (0x06),
41 
42  MPL3115A2_OUT_P_DELTA_MSB = (0x07),
43  MPL3115A2_OUT_P_DELTA_CSB = (0x08),
44  MPL3115A2_OUT_P_DELTA_LSB = (0x09),
45 
46  MPL3115A2_OUT_T_DELTA_MSB = (0x0A),
47  MPL3115A2_OUT_T_DELTA_LSB = (0x0B),
48 
49  MPL3115A2_WHOAMI = (0x0C),
50 
51  MPL3115A2_BAR_IN_MSB = (0x14),
52  MPL3115A2_BAR_IN_LSB = (0x15),
53 
54  MPL3115A2_OFF_H = (0x2D),
55 };
56 
58 enum {
59  MPL3115A2_REGISTER_STATUS_TDR = 0x02,
60  MPL3115A2_REGISTER_STATUS_PDR = 0x04,
61  MPL3115A2_REGISTER_STATUS_PTDR = 0x08,
62 };
63 
65 enum {
66  MPL3115A2_PT_DATA_CFG = 0x13,
67  MPL3115A2_PT_DATA_CFG_TDEFE = 0x01,
68  MPL3115A2_PT_DATA_CFG_PDEFE = 0x02,
69  MPL3115A2_PT_DATA_CFG_DREM = 0x04,
70 };
71 
73 enum {
74 
75  MPL3115A2_CTRL_REG1 = (0x26),
76  MPL3115A2_CTRL_REG2 = (0x27),
77  MPL3115A2_CTRL_REG3 = (0x28),
78  MPL3115A2_CTRL_REG4 = (0x29),
79  MPL3115A2_CTRL_REG5 = (0x2A),
80 };
81 
83 enum {
84  MPL3115A2_CTRL_REG1_SBYB = 0x01,
85  MPL3115A2_CTRL_REG1_OST = 0x02,
86  MPL3115A2_CTRL_REG1_RST = 0x04,
87  MPL3115A2_CTRL_REG1_RAW = 0x40,
88  MPL3115A2_CTRL_REG1_ALT = 0x80,
89  MPL3115A2_CTRL_REG1_BAR = 0x00,
90 };
91 
93 enum {
94  MPL3115A2_CTRL_REG1_OS1 = 0x00,
95  MPL3115A2_CTRL_REG1_OS2 = 0x08,
96  MPL3115A2_CTRL_REG1_OS4 = 0x10,
97  MPL3115A2_CTRL_REG1_OS8 = 0x18,
98  MPL3115A2_CTRL_REG1_OS16 = 0x20,
99  MPL3115A2_CTRL_REG1_OS32 = 0x28,
100  MPL3115A2_CTRL_REG1_OS64 = 0x30,
101  MPL3115A2_CTRL_REG1_OS128 = 0x38,
102 };
103 
105 typedef enum {
106  MPL3115A2_BAROMETER = 0,
107  MPL3115A2_ALTIMETER,
109 
111 typedef enum {
112  MPL3115A2_PRESSURE,
113  MPL3115A2_ALTITUDE,
114  MPL3115A2_TEMPERATURE,
116 
117 #define MPL3115A2_REGISTER_STARTCONVERSION (0x12)
118 
119 
124 public:
126  boolean begin(TwoWire *twoWire = &Wire);
127  float getPressure(void);
128  float getAltitude(void);
129  int8_t getAltitudeOffset(void);
130  void setAltitudeOffset(int8_t offset);
131  float getTemperature(void);
132  void setSeaPressure(float SLP);
133 
134  void setMode(mpl3115a2_mode_t mode = MPL3115A2_BAROMETER);
135  void startOneShot(void);
136  bool conversionComplete(void);
137  float getLastConversionResults(mpl3115a2_meas_t value = MPL3115A2_PRESSURE);
138 
139  void write8(uint8_t a, uint8_t d);
140 
141 private:
142  Adafruit_I2CDevice *i2c_dev = NULL;
143  uint8_t read8(uint8_t a);
144  mpl3115a2_mode_t currentMode;
145 
146  typedef union {
147  struct {
148  uint8_t SBYB : 1;
149  uint8_t OST : 1;
150  uint8_t RST : 1;
151  uint8_t OS : 3;
152  uint8_t RAW : 1;
153  uint8_t ALT : 1;
154  } bit;
155  uint8_t reg;
156  } ctrl_reg1;
157  ctrl_reg1 _ctrl_reg1;
158 };
159 
160 #endif
float getLastConversionResults(mpl3115a2_meas_t value=MPL3115A2_PRESSURE)
Get results from last measurement.
Definition: Adafruit_MPL3115A2.cpp:192
void setMode(mpl3115a2_mode_t mode=MPL3115A2_BAROMETER)
Set measurement mode.
Definition: Adafruit_MPL3115A2.cpp:151
float getPressure(void)
Get barometric pressure.
Definition: Adafruit_MPL3115A2.cpp:79
void setAltitudeOffset(int8_t offset)
Set the altitude offset.
Definition: Adafruit_MPL3115A2.cpp:113
void startOneShot(void)
Initiate a one-shot measurement.
Definition: Adafruit_MPL3115A2.cpp:162
boolean begin(TwoWire *twoWire=&Wire)
Setups the HW (reads coefficients values, etc.)
Definition: Adafruit_MPL3115A2.cpp:44
int8_t getAltitudeOffset(void)
Get the altitude offset.
Definition: Adafruit_MPL3115A2.cpp:105
void setSeaPressure(float SLP)
Set the local sea level pressure.
Definition: Adafruit_MPL3115A2.cpp:121
void write8(uint8_t a, uint8_t d)
write a byte of data to the specified address
Definition: Adafruit_MPL3115A2.cpp:234
bool conversionComplete(void)
Check for measurement conversion completion.
Definition: Adafruit_MPL3115A2.cpp:178
mpl3115a2_meas_t
Definition: Adafruit_MPL3115A2.h:111
mpl3115a2_mode_t
Definition: Adafruit_MPL3115A2.h:105
float getAltitude(void)
Get altitude.
Definition: Adafruit_MPL3115A2.cpp:92
Adafruit_MPL3115A2()
Instantiates a new MPL3115A2 class.
Definition: Adafruit_MPL3115A2.cpp:36
Class that stores state and functions for interacting with MPL3115A2 altimeter.
Definition: Adafruit_MPL3115A2.h:123
float getTemperature(void)
Get temperature.
Definition: Adafruit_MPL3115A2.cpp:139