/*
Wokwi | questions
Assistance with arduino project that has a photosensor and a barometer
The_Hanged_Man - Monday, March 16, 2026 11:46 AM
I cant seem to figure out the library for the barometer and the
photosensor part works already and theres the error
Project Link: https://wokwi.com/projects/458664744710451201?gh=1
*/
#include <Wire.h>
#include <Adafruit_BMP085.h>
#include <LiquidCrystal_I2C.h>
// set to your local airport hPa value, 1013.25 is "standard"
#define seaLevelPressure_hPa 1013.25
// set your altitude in meters if known or set to 0.0
#define localAltitude_m 100.0
const unsigned long ONE_SEC = 1000;
const int PHOTO_PIN = A0;
const int LED_PIN = 10;
unsigned long prevTime = 0;
Adafruit_BMP085 bmp;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
if (!bmp.begin()) {
Serial.println("Could not find a valid BMP180 sensor, check wiring!");
while (1) {}
}
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// Photo sensor
int lightRaw = analogRead(PHOTO_PIN);
int light = map(lightRaw, 1023, 0, 10, 0);
if (light > 5) { // LED on when it's dark
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
if (millis() - prevTime >= ONE_SEC) { // check baro every second
prevTime = millis();
float temperature = bmp.readTemperature();
float pressure = bmp.readPressure() / 100.0;
float altitude = bmp.readAltitude();
float seaLevelPress = bmp.readSealevelPressure(localAltitude_m) / 100.0;
float baroAltitude = bmp.readAltitude(seaLevelPressure_hPa * 100.0);
// temp
lcd.setCursor(0, 0);
lcd.print("Temp : ");
lcd.print(temperature, 1);
lcd.print(char(223));
lcd.print("C ");
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.println("°C");
// pressure
lcd.setCursor(0, 1);
lcd.print("Press: ");
lcd.print(pressure, 1);
lcd.print(" hPa ");
Serial.print("Pressure = ");
Serial.print(pressure);
Serial.println(" hPa");
// altitude
lcd.setCursor(0, 2);
lcd.print("Real alt: ");
lcd.print(baroAltitude, 1);
lcd.print(" m ");
Serial.print("Altitude = ");
Serial.print(altitude);
Serial.println(" meters");
Serial.print("Real altitude: ");
Serial.print(baroAltitude);
Serial.println(" meters");
// sea level pressure
Serial.print("Pressure at sealevel (calculated) = ");
Serial.print(seaLevelPress);
Serial.println(" hPa");
// light level
lcd.setCursor(0, 3);
lcd.print("Light : ");
lcd.print(light > 5 ? "On " : "Off");
// add a line
Serial.println();
}
}
Loading
bmp180
bmp180