type using the second I2C interface, e.g. I don't have a BMP180 so used a BME280
// Heltec_WiFi_LoRa32 V3 interfacing BMP280 on second I2C interace Wire1
// note does not work on Wire (first I2C interface) with the display
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h> // BMP180-Bibliothek
#include "HT_SSD1306Wire.h" // OLED Display-Bibliothek
// OLED Display-Definition (I2C Adresse: 0x3C)
static SSD1306Wire display(0x3c, 500000, SDA_OLED, SCL_OLED, GEOMETRY_128_64, RST_OLED);
Adafruit_BME280 bmp; // BMP180 Sensor-Objekt
void setup() {
Serial.begin(115200);
// Initialisiere I2C für BMP180
Wire1.begin(42, 41); // SDA auf GPIO42, SCL auf GPIO41
if (!bmp.begin(0x76, &Wire1)) {
Serial.println("BMP180 Sensor nicht gefunden! Überprüfe die Verkabelung.");
while (1)
; // Endlosschleife bei Fehler
}
Serial.println("BMP180 erfolgreich initialisiert.");
// Initialisiere das OLED-Display
if (!display.init()) {
Serial.println("Display nicht gefunden!");
while (1)
; // Endlosschleife bei Fehler
}
display.setFont(ArialMT_Plain_16); // Setze große Schrift
display.setTextAlignment(TEXT_ALIGN_CENTER); // Textausrichtung auf Mitte // Initialisiere BMP180
}
void loop() {
// Luftdruck vom BMP180 lesen
float pressure = bmp.readPressure() / 100.0F; // Druck in hPa umrechnen
// Ausgabe auf dem seriellen Monitor
Serial.print("Luftdruck: ");
Serial.print(pressure);
Serial.println(" hPa");
// Ausgabe auf dem OLED-Display
display.clear();
display.drawString(64, 32, "Druck: " + String(pressure) + " hPa");
display.display();
delay(1000); // 1 Sekunde Pause vor der nächsten Messung
}
serial monitor displays
BMP180 erfolgreich initialisiert.
Luftdruck: 1026.16 hPa
Luftdruck: 1026.16 hPa
Luftdruck: 1026.18 hPa
Luftdruck: 1026.18 hPa
Luftdruck: 1026.15 hPa
Luftdruck: 1026.17 hPa
