#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_BME280.h>
// BME280 I2C address is 0x76(108)
#define Addr 0x76
Adafruit_BME280 bme;
// LCD Display Configuration
LiquidCrystal_I2C lcd(0x27, 20, 4); // Set the LCD I2C address and size (20x4)
void setup()
{
// Initialize I2C communication as MASTER
Wire.begin();
// Initialize Serial communication, set baud rate = 9600
Serial.begin(9600);
// Initialize the LCD
lcd.init();
lcd.backlight(); // Turn on the backlight
lcd.setCursor(0, 0);
lcd.print("Temp: C");
lcd.setCursor(0, 1);
lcd.print("Temp: F");
lcd.setCursor(0, 2);
lcd.print("Pressure: hPa");
lcd.setCursor(0, 3);
lcd.print("Humidity: %");
// Initialize the BME280 sensor
if (!bme.begin(Addr))
{
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop()
{
// Read sensor data
float cTemp = bme.readTemperature();
float fTemp = cTemp * 1.8 + 32;
float pressure = bme.readPressure() / 100.0F; // Convert pressure to hPa
float humidity = bme.readHumidity();
// Display data on the LCD
lcd.setCursor(7, 0);
lcd.print(cTemp, 2);
lcd.setCursor(7, 1);
lcd.print(fTemp, 2);
lcd.setCursor(11, 2);
lcd.print(pressure, 2);
lcd.setCursor(11, 3);
lcd.print(humidity, 2);
// Output data to serial monitor
Serial.print("Temperature in Celsius : ");
Serial.print(cTemp);
Serial.println(" C");
Serial.print("Temperature in Fahrenheit : ");
Serial.print(fTemp);
Serial.println(" F");
Serial.print("Pressure : ");
Serial.print(pressure);
Serial.println(" hPa");
Serial.print("Relative Humidity : ");
Serial.print(humidity);
Serial.println(" %");
delay(1000);
}