Here’s a complete Arduino sketch to interface a BMP180 sensor with an OLED display using the Adafruit libraries. This code reads temperature and pressure from the BMP180 and displays it on a OLED screen.
Hardware Required
- Arduino Uno/Nano/etc.
- BMP180 sensor
- OLED display
- Jumper wires
Libraries to Install (via Library Manager in Arduino IDE)
Adafruit BMP085 Unified
(supports BMP180)Adafruit Unified Sensor
Adafruit SSD1306
Adafruit GFX
Wiring Connections
Device | VCC | GND | SDA | SCL |
---|---|---|---|---|
BMP180 | 3.3V – 5V | GND | A4 | A5 |
OLED | 3.3V – 5V | GND | A4 | A5 |
Arduino Code:
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
void setup() {
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("OLED not found");
while (1);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
if (!bmp.begin()) {
Serial.println("BMP180 not found");
display.setCursor(0, 0);
display.println("BMP180 Error");
display.display();
while (1);
}
display.setCursor(0, 0);
display.println("BMP180 Ready");
display.display();
delay(2000);
}
void loop() {
display.clearDisplay();
sensors_event_t event;
bmp.getEvent(&event);
float temperature;
bmp.getTemperature(&temperature);
// Serial logging
Serial.print("Temp: ");
Serial.print(temperature);
Serial.print(" °C, Pressure: ");
Serial.print(event.pressure);
Serial.println(" hPa");
// OLED display
display.setCursor(0, 0);
display.print("Temp: ");
display.print(temperature, 1);
display.println(" C");
display.setCursor(0, 20);
display.print("Pres: ");
display.print(event.pressure, 1);
display.println(" hPa");
display.display();
delay(2000);
}
Troubleshooting for BMP180 with Arduino:
Confirm there’s no loose connection or wrong pin.
If you’re using a breadboard, reseat the wires or try a different one.