#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
//https://zoom.earth/maps/pressure/
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BMP280 bmp; // use I2C interface
// store a byte received from UART
int incomingByte = 0;
/////////////// Setup Functions ///////////////
void setup_serial_port(){
Serial1.begin(115200);
Serial1.println("Press ENTER to start!");
delay(500);
// Wait until a newline character is received
while (incomingByte != '\n') {
if (Serial1.available() > 0) {
incomingByte = Serial1.read();
}
}
Serial1.println("Starting BMP280 Example with Rpi pico!");
}
void setup_altimeter(){
bool status;
status = bmp.begin(0x76);
if (!status) {
Serial1.println("Could not find a valid BME280 sensor, check wiring!");
while (1){
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000);
}
}
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
Serial1.println("Altimeter Initialized!\n");
}
void setup() {
// put your setup code here, to run once:
setup_serial_port();
setup_altimeter();
}
/////////////// Main Functions ///////////////
void loop() {
Serial1.print("Temperature = ");
Serial1.print(bmp.readTemperature());
Serial1.println(" *C");
Serial1.print("Pressure = ");
Serial1.print(bmp.readPressure() / 100.0F);
Serial1.println(" hPa");
Serial1.print("Approx. Altitude = ");
Serial1.print(bmp.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.println(" m");
Serial1.println();
delay(2000);
}