#include "Wire.h"
#include "LiquidCrystal_I2C.h"
#include "BMP280_DEV.h"
#define I2C_addr 0x27 // Ensure this is correct using an I2C scanner
#define LCD_COL 16
#define LCD_ROWS 2
#define BMP_CS PA4 // Chip Select for BMP280
#define BMP_SCK PA5 // SPI Clock
#define BMP_MISO PA6 // SPI MISO
#define BMP_MOSI PA7
BMP280_DEV bmp280(BMP_CS);
LiquidCrystal_I2C lcd(I2C_addr, LCD_COL, LCD_ROWS);
void setup() {
Serial.begin(115200);
Wire.begin();
Serial.println("Hello, STM32!");
bmp280.begin();
if (!bmp280.begin()) {
Serial.println("BMP280 initialization failed!");
while (1);
} else {
Serial.println("BMP280 initialized successfully!");
} // Default initialisation, place the BMP280 into SLEEP_MODE
bmp280.setTimeStandby(TIME_STANDBY_2000MS); // Set the standby time to 2 seconds
bmp280.startNormalConversion();
}
void loop() {
lcd.clear(); // Clear screen before updating
bmp280.setPresOversampling(OVERSAMPLING_X4); // Pressure oversampling
bmp280.setTempOversampling(OVERSAMPLING_X2); // Temperature oversampling
bmp280.setTimeStandby(TIME_STANDBY_1000MS);
float temp;
digitalWrite(BMP_CS, LOW);
bmp280.getTemperature(temp);
Serial.print(temp);
Serial.print("\n");
lcd.setCursor(0, 0);
lcd.print("Hello, STM32!");
digitalWrite(BMP_CS, HIGH);
lcd.setCursor(0, 1);
lcd.print("Welcome to Wokwi!");
delay(2000); // Delay for better readability
}