STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include "
main.h
"
2
3
#include <
Arduino.h
>
4
#include <Wire.h>
5
#include <math.h>
6
7
#include "SparkFun_LPS28DFW_Arduino_Library.h"
8
9
static
LPS28DFW
pressureSensor
;
10
11
/** Barometric altitude (m) from static pressure using a simple ISA troposphere
12
* fit. */
13
static
float
pressureToAltitudeM
(
float
pressureHpa,
float
seaLevelHpa) {
14
if
(pressureHpa <= 0.f || seaLevelHpa <= 0.f)
15
return
NAN;
16
// h = 44330 * (1 - (P/P0)^(1/5.255)); exponent ≈ 0.190284
17
return
44330.0f * (1.0f - powf(pressureHpa / seaLevelHpa, 0.190284f));
18
}
19
20
void
setup
() {
21
Serial
.begin(115200);
22
while
(!
Serial
)
23
delay
(10);
24
25
Wire.begin(
LPS28DFW_SDA_PIN
,
LPS28DFW_SCL_PIN
);
26
27
while
(
pressureSensor
.begin(
LPS28DFW_I2C_ADDR
, Wire) != LPS28DFW_OK) {
28
Serial
.println(
29
"ERROR: LPS28DFW not found. Check wiring and I2C address (0x5C / "
30
"0x5D)."
);
31
delay
(1000);
32
}
33
34
lps28dfw_md_t modeConfig = {
35
.fs = LPS28DFW_1260hPa,
36
.odr = LPS28DFW_10Hz,
37
.avg = LPS28DFW_32_AVG,
38
.lpf = LPS28DFW_LPF_DISABLE,
39
};
40
if
(
pressureSensor
.setModeConfig(&modeConfig) != LPS28DFW_OK) {
41
Serial
.println(
"ERROR: setModeConfig failed."
);
42
while
(1)
43
delay
(1000);
44
}
45
46
Serial
.println();
47
Serial
.println(
"LPS28DFW test (SparkFun library)"
);
48
Serial
.printf(
49
"Altitude uses ISA P0 = %.2f hPa (change LPS28DFW_SEA_LEVEL_HPA to "
50
"match local pressure)\r\n"
,
51
LPS28DFW_SEA_LEVEL_HPA
);
52
Serial
.println();
53
}
54
55
void
loop
() {
56
if
(
pressureSensor
.getSensorData() != LPS28DFW_OK) {
57
Serial
.println(
"ERROR: getSensorData failed"
);
58
delay
(500);
59
return
;
60
}
61
62
const
float
tempC =
pressureSensor
.data.heat.deg_c;
63
const
float
pressHpa =
pressureSensor
.data.pressure.hpa;
64
const
float
altM =
pressureToAltitudeM
(pressHpa,
LPS28DFW_SEA_LEVEL_HPA
);
65
66
Serial
.printf(
"Temperature: %.3f C\r\n"
, tempC);
67
Serial
.printf(
"Pressure: %.3f hPa\r\n"
, pressHpa);
68
Serial
.printf(
"Altitude: %.1f m (barometric, ISA)\r\n"
, altM);
69
Serial
.println();
70
71
delay
(1000);
72
}
Arduino.h
Serial
static SerialStub Serial
Definition
Arduino.h:128
main.h
LPS28DFW_SDA_PIN
#define LPS28DFW_SDA_PIN
Definition
main.h:4
LPS28DFW_SCL_PIN
#define LPS28DFW_SCL_PIN
Definition
main.h:5
LPS28DFW_I2C_ADDR
#define LPS28DFW_I2C_ADDR
Definition
main.h:9
LPS28DFW_SEA_LEVEL_HPA
#define LPS28DFW_SEA_LEVEL_HPA
Definition
main.h:13
delay
void delay(int ms)
Definition
actuator_nc.cpp:30
setup
void setup()
Definition
main.cpp:142
loop
void loop()
Definition
main.cpp:201
pressureToAltitudeM
static float pressureToAltitudeM(float pressureHpa, float seaLevelHpa)
Definition
main.cpp:38
pressureSensor
static LPS28DFW pressureSensor
Definition
main.cpp:9
firmware
IC_Testing
LPS28DFW
src
main.cpp
Generated by
1.15.0