Tahoma working with dropdown
This commit is contained in:
+145
@@ -0,0 +1,145 @@
|
||||
/*
|
||||
Environment_Calculations.ino
|
||||
|
||||
This code shows how to record data from the BME280 environmental sensor
|
||||
and perform various calculations.
|
||||
|
||||
GNU General Public License
|
||||
|
||||
Written: Dec 30 2015.
|
||||
Last Updated: Oct 07 2017.
|
||||
|
||||
Connecting the BME280 Sensor:
|
||||
Sensor -> Board
|
||||
-----------------------------
|
||||
Vin (Voltage In) -> 3.3V
|
||||
Gnd (Ground) -> Gnd
|
||||
SDA (Serial Data) -> A4 on Uno/Pro-Mini, 20 on Mega2560/Due, 2 Leonardo/Pro-Micro
|
||||
SCK (Serial Clock) -> A5 on Uno/Pro-Mini, 21 on Mega2560/Due, 3 Leonardo/Pro-Micro
|
||||
|
||||
*/
|
||||
|
||||
#include <EnvironmentCalculations.h>
|
||||
#include <BME280I2C.h>
|
||||
#include <Wire.h>
|
||||
|
||||
#define SERIAL_BAUD 115200
|
||||
|
||||
// Assumed environmental values:
|
||||
float referencePressure = 1018.6; // hPa local QFF (official meteor-station reading)
|
||||
float outdoorTemp = 4.7; // °C measured local outdoor temp.
|
||||
float barometerAltitude = 1650.3; // meters ... map readings + barometer position
|
||||
|
||||
|
||||
BME280I2C::Settings settings(
|
||||
BME280::OSR_X1,
|
||||
BME280::OSR_X1,
|
||||
BME280::OSR_X1,
|
||||
BME280::Mode_Forced,
|
||||
BME280::StandbyTime_1000ms,
|
||||
BME280::Filter_16,
|
||||
BME280::SpiEnable_False,
|
||||
BME280I2C::I2CAddr_0x76
|
||||
);
|
||||
|
||||
BME280I2C bme(settings);
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
void setup()
|
||||
{
|
||||
Serial.begin(SERIAL_BAUD);
|
||||
|
||||
while(!Serial) {} // Wait
|
||||
|
||||
Wire.begin();
|
||||
|
||||
while(!bme.begin())
|
||||
{
|
||||
Serial.println("Could not find BME280 sensor!");
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
switch(bme.chipModel())
|
||||
{
|
||||
case BME280::ChipModel_BME280:
|
||||
Serial.println("Found BME280 sensor! Success.");
|
||||
break;
|
||||
case BME280::ChipModel_BMP280:
|
||||
Serial.println("Found BMP280 sensor! No Humidity available.");
|
||||
break;
|
||||
default:
|
||||
Serial.println("Found UNKNOWN sensor! Error!");
|
||||
}
|
||||
Serial.print("Assumed outdoor temperature: "); Serial.print(outdoorTemp);
|
||||
Serial.print("°C\nAssumed reduced sea level Pressure: "); Serial.print(referencePressure);
|
||||
Serial.print("hPa\nAssumed barometer altitude: "); Serial.print(barometerAltitude);
|
||||
Serial.println("m\n***************************************");
|
||||
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
void loop()
|
||||
{
|
||||
printBME280Data(&Serial);
|
||||
delay(500);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
void printBME280Data
|
||||
(
|
||||
Stream* client
|
||||
)
|
||||
{
|
||||
float temp(NAN), hum(NAN), pres(NAN);
|
||||
|
||||
BME280::TempUnit tempUnit(BME280::TempUnit_Celsius);
|
||||
BME280::PresUnit presUnit(BME280::PresUnit_hPa);
|
||||
|
||||
bme.read(pres, temp, hum, tempUnit, presUnit);
|
||||
|
||||
client->print("Temp: ");
|
||||
client->print(temp);
|
||||
client->print("°"+ String(tempUnit == BME280::TempUnit_Celsius ? "C" :"F"));
|
||||
client->print("\t\tHumidity: ");
|
||||
client->print(hum);
|
||||
client->print("% RH");
|
||||
client->print("\t\tPressure: ");
|
||||
client->print(pres);
|
||||
client->print(String(presUnit == BME280::PresUnit_hPa ? "hPa" : "Pa")); // expected hPa and Pa only
|
||||
|
||||
EnvironmentCalculations::AltitudeUnit envAltUnit = EnvironmentCalculations::AltitudeUnit_Meters;
|
||||
EnvironmentCalculations::TempUnit envTempUnit = EnvironmentCalculations::TempUnit_Celsius;
|
||||
|
||||
/// To get correct local altitude/height (QNE) the reference Pressure
|
||||
/// should be taken from meteorologic messages (QNH or QFF)
|
||||
float altitude = EnvironmentCalculations::Altitude(pres, envAltUnit, referencePressure, outdoorTemp, envTempUnit);
|
||||
|
||||
float dewPoint = EnvironmentCalculations::DewPoint(temp, hum, envTempUnit);
|
||||
|
||||
/// To get correct seaLevel pressure (QNH, QFF)
|
||||
/// the altitude value should be independent on measured pressure.
|
||||
/// It is necessary to use fixed altitude point e.g. the altitude of barometer read in a map
|
||||
float seaLevel = EnvironmentCalculations::EquivalentSeaLevelPressure(barometerAltitude, temp, pres, envAltUnit, envTempUnit);
|
||||
|
||||
float absHum = EnvironmentCalculations::AbsoluteHumidity(temp, hum, envTempUnit);
|
||||
|
||||
client->print("\t\tAltitude: ");
|
||||
client->print(altitude);
|
||||
client->print((envAltUnit == EnvironmentCalculations::AltitudeUnit_Meters ? "m" : "ft"));
|
||||
client->print("\t\tDew point: ");
|
||||
client->print(dewPoint);
|
||||
client->print("°"+ String(envTempUnit == EnvironmentCalculations::TempUnit_Celsius ? "C" :"F"));
|
||||
client->print("\t\tEquivalent Sea Level Pressure: ");
|
||||
client->print(seaLevel);
|
||||
client->print(String( presUnit == BME280::PresUnit_hPa ? "hPa" :"Pa")); // expected hPa and Pa only
|
||||
|
||||
client->print("\t\tHeat Index: ");
|
||||
float heatIndex = EnvironmentCalculations::HeatIndex(temp, hum, envTempUnit);
|
||||
client->print(heatIndex);
|
||||
client->print("°"+ String(envTempUnit == EnvironmentCalculations::TempUnit_Celsius ? "C" :"F"));
|
||||
|
||||
client->print("\t\tAbsolute Humidity: ");
|
||||
client->println(absHum);
|
||||
|
||||
delay(1000);
|
||||
}
|
||||
Reference in New Issue
Block a user