-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
pressure.h
141 lines (117 loc) · 4.32 KB
/
pressure.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#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 --