blob: 9e92cdd204fdff3cad4796101075c9ecda0c7470 (
plain)
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
|
#include <stdio.h>
#include "hardware/gpio.h"
#include "hardware/i2c.h"
#include "pico/stdio.h"
#include "pico/time.h"
#include "ms5607.hpp"
#include "heartbeat.hpp"
#include "rp2040_micro.h"
#define DATA_RATE_HZ 200
#define MAX_SCL 400000
bool data_callback(repeating_timer_t *rt);
repeating_timer_t data_timer;
MS5607 altimeter(i2c_default);
int main() {
stdio_init_all();
i2c_init(i2c_default, MAX_SCL);
gpio_init(PICO_DEFAULT_I2C_SCL_PIN);
gpio_init(PICO_DEFAULT_I2C_SDA_PIN);
gpio_set_function(PICO_DEFAULT_I2C_SCL_PIN, GPIO_FUNC_I2C);
gpio_set_function(PICO_DEFAULT_I2C_SDA_PIN, GPIO_FUNC_I2C);
altimeter.initialize();
heartbeat_initialize(PICO_DEFAULT_LED_PIN);
// gpio_init(PICO_DEFAULT_LED_PIN);
// gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
// gpio_put(PICO_DEFAULT_LED_PIN, 1);
add_repeating_timer_us(-1000000 / DATA_RATE_HZ, &data_callback, NULL, &data_timer);
while (1) {
sleep_ms(500);
printf("\n\nAltitude: %4.2f\nPressure: %4.2f\nTemperature: %4.2f\n", (float) altimeter.get_altitude() / ALTITUDE_SCALE_F, (float) altimeter.get_pressure() / PRESSURE_SCALE_F, (float) altimeter.get_temperature() / TEMPERATURE_SCALE_F);
}
}
bool data_callback(repeating_timer_t *rt) {
altimeter.ms5607_start_sample();
return true;
}
|