GY-63_MS5611/libraries/pressure/pressure.h
2023-11-16 10:35:32 +01:00

142 lines
4.3 KiB
C++

#pragma once
//
// FILE: pressure.h
// AUTHOR: Rob Tillaart
// VERSION: 0.3.1
// PURPOSE: Arduino library for pressure conversion
// URL: https://github.com/RobTillaart/pressure
#define PRESSURE_LIB_VERSION (F("0.3.1"))
// CONSTANTS NEED TO BE VERIFIED
// Temperature 25°C ?
// CONSTANTS SETTERS
#define BAR2MILLIBAR 1000
#define ATM2MILLIBAR 1013.25
#define PSI2MILLIBAR 68.9475729318
#define DYNES2MILLIBAR 0.001
#define INHG2MILLIBAR 33.85355
#define INH2O2MILLIBAR 2.4908890833333
#define PASCAL2MILLIBAR 0.01
#define TORR2MILLIBAR 1.33322368
#define CMHG2MILLIBAR 13.3322368
#define CMH2O2MILLIBAR 0.980665
#define MSW2MILLIBAR 0.01
// CONSTANTS GETTERS
#define MILLIBAR2BAR (1.0 / BAR2MILLIBAR)
#define MILLIBAR2ATM (1.0 / ATM2MILLIBAR)
#define MILLIBAR2PSI (1.0 / PSI2MILLIBAR)
#define MILLIBAR2DYNES (1.0 / DYNES2MILLIBAR)
#define MILLIBAR2INHG (1.0 / INHG2MILLIBAR)
#define MILLIBAR2INH2O (1.0 / INH2O2MILLIBAR)
#define MILLIBAR2PASCAL (1.0 / PASCAL2MILLIBAR)
#define MILLIBAR2TORR (1.0 / TORR2MILLIBAR)
#define MILLIBAR2CMHG (1.0 / CMHG2MILLIBAR)
#define MILLIBAR2CMH2O (1.0 / CMH2O2MILLIBAR)
#define MILLIBAR2MSW (1.0 / MSW2MILLIBAR)
/*
// was
#define MILLIBAR2BAR 0.001
#define MILLIBAR2ATM 9.86923267e-4
#define MILLIBAR2PSI 0.0145037738
#define MILLIBAR2DYNES 1000
#define MILLIBAR2INHG 2.9539e-2
#define MILLIBAR2INH2O 0.40146307866177
#define MILLIBAR2PASCAL 100
#define MILLIBAR2TORR 0.750061683
#define MILLIBAR2CMHG 0.0750061683
#define MILLIBAR2CMH2O 1.0197162129779
#define MILLIBAR2MSW 100
*/
class pressure
{
public:
// CONSTRUCTOR
pressure(float value = 0.0) { _pressure = value; };
void setMilliBar(float value) { _pressure = value; };
void setBar(float value) { _pressure = value * BAR2MILLIBAR; };
void setPSI(float value) { _pressure = value * PSI2MILLIBAR; };
void setATM(float value) { _pressure = value * ATM2MILLIBAR; }
void setDynes(float value) { _pressure = value * DYNES2MILLIBAR; }
void setInchHg(float value) { _pressure = value * INHG2MILLIBAR; }
void setInchH2O(float value) { _pressure = value * INH2O2MILLIBAR; }
void setPascal(float value) { _pressure = value * PASCAL2MILLIBAR; }
void setTORR(float value) { _pressure = value * TORR2MILLIBAR; }
void setCmHg(float value) { _pressure = value * CMHG2MILLIBAR; }
void setCmH2O(float value) { _pressure = value * CMH2O2MILLIBAR; }
void setMSW(float value) { _pressure = value * MSW2MILLIBAR; }
float getMilliBar() { return _pressure; };
float getBar() { return _pressure * MILLIBAR2BAR; };
float getPSI() { return _pressure * MILLIBAR2PSI; };
float getATM() { return _pressure * MILLIBAR2ATM; }
float getDynes() { return _pressure * MILLIBAR2DYNES; }
float getInchHg() { return _pressure * MILLIBAR2INHG; }
float getInchH2O() { return _pressure * MILLIBAR2INH2O; }
float getPascal() { return _pressure * MILLIBAR2PASCAL; }
float getTORR() { return _pressure * MILLIBAR2TORR; }
float getCmHg() { return _pressure * MILLIBAR2CMHG; }
float getCmH2O() { return _pressure * MILLIBAR2CMH2O; }
float getMSW() { return _pressure * MILLIBAR2MSW; }
// EXPERIMENTAL
// temperature in KELVIN !
float change(float T1, float T2, float V1, float V2, float N1, float N2)
{
changeTemperature(T1, T2);
changeVolume(V1, V2);
changeMole(N1, N2);
return _pressure;
}
// temperature must be in KELVIN!
float changeTemperature(float T1, float T2)
{
if ((T1 != T2) && (T1 > 0) && (T2 > 0))
{
_pressure *= (T2 / T1);
}
return _pressure;
}
// volume must be in same units
float changeVolume(float V1, float V2)
{
if ((V1 != V2) && (V1 > 0) && (V2 > 0))
{
_pressure *= (V1 / V2);
}
return _pressure;
}
// moles must be in same units.
float changeMole(float N1, float N2)
{
if ((N1 != N2) && (N1 > 0) && (N2 > 0))
{
_pressure *= (N2 / N1);
}
return _pressure;
}
private:
float _pressure; // millibar.
};
// -- END OF FILE --