first commit
This commit is contained in:
105
ESP8266_DOMOTICZ_BMP180/Modules.cpp
Executable file
105
ESP8266_DOMOTICZ_BMP180/Modules.cpp
Executable file
@@ -0,0 +1,105 @@
|
||||
#include "Modules.h"
|
||||
|
||||
Modules::Modules()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Modules::barometre() {
|
||||
/* See Example: TypeA_WithDIPSwitches */
|
||||
Wire.begin(SDA, SCL);
|
||||
delay(200);
|
||||
// init
|
||||
bmp.init();
|
||||
|
||||
// Initialize the sensor (it is important to get calibration values stored on the device).
|
||||
|
||||
if (bmp.hasValidID())
|
||||
Serial.println("BMP180 init success");
|
||||
else
|
||||
{
|
||||
// Oops, something went wrong, this is usually a connection problem,
|
||||
// see the comments at the top of this sketch for the proper connections.
|
||||
|
||||
Serial.println("BMP180 init fail");
|
||||
return;
|
||||
}
|
||||
|
||||
delay(500);
|
||||
Serial.println("Barometre: ");
|
||||
|
||||
temp = bmp.getTemperature();
|
||||
pressure = bmp.getPressure();
|
||||
// Print out the measurement:
|
||||
Serial.print("temperature: ");
|
||||
Serial.print(temp,2);
|
||||
Serial.print(" deg C, ");
|
||||
Serial.print((9.0/5.0) * temp + 32.0,2);
|
||||
Serial.println(" deg F");
|
||||
// Print out the measurement:
|
||||
Serial.print("absolute pressure: ");
|
||||
Serial.print(pressure, 2);
|
||||
Serial.print(" mb, ");
|
||||
Serial.print(pressure * 0.0295333727, 2);
|
||||
Serial.println(" inHg");
|
||||
|
||||
// // The pressure sensor returns abolute pressure, which varies with altitude.
|
||||
// // To remove the effects of altitude, use the sealevel function and your current altitude.
|
||||
// // This number is commonly used in weather reports.
|
||||
// // Parameters: P = absolute pressure in mb, ALTITUDE = current altitude in m.
|
||||
// // Result: pression = sea-level compensated pressure in mb
|
||||
//
|
||||
pression = sealevel(pressure,ALTITUDE); // we're at n meters
|
||||
Serial.print("relative (sea-level) pressure: ");
|
||||
Serial.print(pression,2);
|
||||
Serial.print(" mb, ");
|
||||
pressionHg = pression*0.0295333727;
|
||||
Serial.print(pressionHg,2);
|
||||
Serial.println(" inHg");
|
||||
|
||||
// On the other hand, if you want to determine your altitude from the pressure reading,
|
||||
// use the altitude function along with a baseline pressure (sea-level or other).
|
||||
// Parameters: P = absolute pressure in mb, p0 = baseline pressure in mb.
|
||||
// Result: a = altitude in m.
|
||||
|
||||
alt = altitude(pressure,pression);
|
||||
Serial.print("computed altitude: ");
|
||||
Serial.print(alt, 0);
|
||||
Serial.print(" meters, ");
|
||||
Serial.print(alt * 3.28084,0);
|
||||
Serial.println(" feet");
|
||||
}
|
||||
|
||||
|
||||
void Modules::sleep(int sleepTime)
|
||||
{
|
||||
Serial.print("Go to sleep ");
|
||||
Serial.println(sleepTime);
|
||||
delay(20);
|
||||
|
||||
ESP.deepSleep(sleepTime * 1000000L);
|
||||
|
||||
//sleepWifi();
|
||||
delay(200);
|
||||
}
|
||||
|
||||
void Modules::readLuminosite()
|
||||
{
|
||||
lum = analogRead(PIN_LUM);
|
||||
}
|
||||
|
||||
double Modules::sealevel(double P, double A)
|
||||
// Given a pressure P (mb) taken at a specific altitude (meters),
|
||||
// return the equivalent pressure (mb) at sea level.
|
||||
// This produces pressure readings that can be used for weather measurements.
|
||||
{
|
||||
return(P/pow(1-(A/44330.0),5.255));
|
||||
}
|
||||
|
||||
|
||||
double Modules::altitude(double P, double P0)
|
||||
// Given a pressure measurement P (mb) and the pressure at a baseline P0 (mb),
|
||||
// return altitude (meters) above baseline.
|
||||
{
|
||||
return(44330.0*(1-pow(P/P0,1/5.255)));
|
||||
}
|
||||
Reference in New Issue
Block a user