/**************************************************************************/
/*!
@file Adafruit_MPL3115A2.cpp
@author K.Townsend (Adafruit Industries)
@license BSD (see license.txt)
Example for the MPL3115A2 barometric pressure sensor
This is a library for the Adafruit MPL3115A2 breakout
----> https://www.adafruit.com/products/1893
Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!
@section HISTORY
v1.0 - First release
*/
/**************************************************************************/
/****************Modified by R. Wozniak Mar-26-2016************************/
#include <Wire.h>
#include <Adafruit_MPL3115A2.h>
Adafruit_MPL3115A2 baro = Adafruit_MPL3115A2();
float startTime;
float acqTime;
float startPressure; // For Tare Values
float startAltitude; // For Tare Values
float startTemperature; // For Tare Values
float offsetPressureCorr = 102600.00; // Local Barometric Pressure at startup for correction (Pa) // 100mb = 1Pa, 3377in Hg = 1Pa
float offsetAltitudeCorr = 63.01; // Local Altitude at startup for correction (m)
float offsetTemperatureCorr = 25.22; // Local Temperature at startup for correction (Deg C)
float rawPressure;
float rawAltitude;
float rawTemp;
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial port open
Serial.println("Adafruit_MPL3115A2 test!");
Startup();
}
void loop() {
acqTime=millis();
rawPressure = baro.getPressure();
rawAltitude = baro.getAltitude();
rawTemp = baro.getTemperature();
printRaw();
printTare();
printCorrected();
delay(100);
}
void Startup()
{
if (! baro.begin()) {
Serial.println("Couldnt find sensor");
return;
}
Serial.print("Recording Tare Values... Please wait 1 minute");
baro.getPressure(); //First is reading always wrong
for (int i=0; i <= 9; i++){
startPressure += baro.getPressure();
startAltitude += baro.getAltitude();
startTemperature += baro.getTemperature();
Serial.print(".");
}
startPressure = startPressure/10.0;
startAltitude = startAltitude/10.0;
startTemperature = startTemperature/10.0;
Serial.println();
Serial.print("Startup Tare Values Pressure (Pa), Altitude (m), Temperature (deg C):");
Serial.print(startPressure,3);
Serial.print(", ");
Serial.print(startAltitude,3);
Serial.print(", ");
Serial.print(startTemperature,3);
Serial.println();
startTime=millis();
}
void printRaw(){
Serial.println(); Serial.println("Raw MPL3115A3 Values: Time(Sec), Pressure(Pa), Altitude(m), Temperature(deg C)");
Serial.print((acqTime-startTime)/1000.0f,3);
Serial.print(", ");
Serial.print(rawPressure); Serial.print(", "); // Raw Pressure in Pascals
//Serial.print(rawPressure/3377,3); Serial.print(", "); // Raw Pressure in inHG
//Serial.print(rawPressure/100); Serial.print(", "); // Raw Pressure in milliBar
Serial.print(rawAltitude,3); Serial.print(", "); // Raw Altitude in meters
//Serial.print(rawAltitude*3.28084,3); Serial.print(", "); // Raw Altitude in ft
Serial.print(((rawTemp)),3); Serial.print(", "); // RawTemperature in Deg C
//Serial.print(((rawTemp*9/5)),3); // Raw Temperature in Deg F
Serial.println();
}
void printTare(){
Serial.println(); Serial.println("Tare Offset Values: Time(Sec), Pressure(mb), Altitude(ft), Temperature(deg F)");
Serial.print((acqTime-startTime)/1000.0f,3);
Serial.print(", ");
float pressure = rawPressure - startPressure;
//Serial.print(pressure); Serial.print(", "); // Tare Offset Pressure in Pascals
//Serial.print(pressure/3377,3); Serial.print(", "); // Tare Offset Pressure in Pascals Pressure in inHG
Serial.print(pressure/100); Serial.print(", "); // Tare Offset Pressure in Pascals Pressure in milliBar
float altitude = rawAltitude - startAltitude;
//Serial.print(altitude,3); Serial.print(", "); // Tare Offset Altitude in meters
Serial.print(altitude*3.28084,3); Serial.print(", "); // Tare Offset Altitude in ft
float temp = rawTemp - startTemperature;
//Serial.print(((temp)),3); Serial.print(", "); // Tare Offset Temperature in Deg C
Serial.print(((temp*9/5)),3); // Tare Offset Temperature in Deg F
Serial.println();
}
void printCorrected(){
Serial.println(); Serial.println("Corrected Values: Time(Sec), Pressure(mb), Altitude(ft), Temperature(deg F)");
Serial.print((acqTime-startTime)/1000.0f,3);
Serial.print(", ");
float pressure = (rawPressure - startPressure) + offsetPressureCorr;
//Serial.print(pressure); Serial.print(", "); // Corrected Pressure in Pascals
//Serial.print(pressure/3377,3); Serial.print(", "); // Corrected Pressure in inHG
Serial.print(pressure/100); Serial.print(", "); // Corrected Pressure in milliBar
float altitude = rawAltitude - startAltitude + offsetAltitudeCorr;
//Serial.print(altitude,3); Serial.print(", "); // Corrected Altitude in meters
Serial.print(altitude*3.28084,3); Serial.print(", "); // Corrected Altitude in ft
float temp = rawTemp - startTemperature + offsetTemperatureCorr;
//Serial.print(((temp)),3); Serial.print(", "); // Corrected Temperature in Deg C
Serial.print(((temp*9/5)+32),3); // Corrected Temperature in Deg F
Serial.println();
}