#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_GFX.h>
#include <Adafruit_ST7789.h>
// SPI ESP32 (domyślne): SCK=18, MOSI=23, MISO=19 (MISO nieużywany przez ST7789)
#define TFT_CS 5
#define TFT_DC 2
#define TFT_RST 4
#define TFT_BL 15
#define SDA_pin 21
#define SCL_pin 22
#define SEA_LEVEL_PRESSURE (1013.25) // Standard sea level pressure
Adafruit_ST7789 tft(TFT_CS, TFT_DC, TFT_RST);
Adafruit_BME280 environmentSensor; // Using I2C for communication
//Adafruit_BME280 environmentSensor(SPI_CS); // Use for hardware SPI
//Adafruit_BME280 environmentSensor(SPI_CS, SPI_MOSI, SPI_MISO, SPI_CLK); // Use for software SPI
unsigned long refreshInterval;
void setup() {
Serial.begin(9600);
Wire.begin(21, 22); // to co w diagramie!
delay(50);
// Skan – zobaczysz realny adres widziany przez szkic
for (uint8_t a = 1; a < 127; a++) {
Wire.beginTransmission(a);
if (Wire.endTransmission() == 0) {
Serial.print("I2C: 0x");
Serial.println(a, HEX);
}
}
Serial.println("Init BME...");
if (!environmentSensor.begin(0x76, &Wire)) { // jawnie ta sama Wire
Serial.println("BME nie startuje na 0x76, próbuję 0x77...");
if (!environmentSensor.begin(0x77, &Wire)) {
Serial.println("Sensor initialization failed...");
while (1);
}
}
Serial.println("BME OK");
}
void loop() {
displaySensorData();
delay(refreshInterval);
}
void scanI2C() {
for (uint8_t addr = 1; addr < 127; addr++) {
Wire.beginTransmission(addr);
if (Wire.endTransmission() == 0) {
Serial.print("Znaleziono urządzenie pod adresem: 0x");
Serial.println(addr, HEX);
}
}
}
void displaySensorData() {
Serial.print("Temperature: ");
Serial.print(environmentSensor.readTemperature());
Serial.println(" °C");
// Optional: Uncomment for Fahrenheit conversion
Serial.print("Temperature: ");
Serial.print(1.8 * environmentSensor.readTemperature() + 32);
Serial.println(" °F");
Serial.print("Pressure: ");
Serial.print(environmentSensor.readPressure() / 100.0F);
Serial.println(" hPa");
Serial.print("Estimated Altitude: ");
Serial.print(environmentSensor.readAltitude(SEA_LEVEL_PRESSURE));
Serial.println(" meters");
Serial.print("Humidity: ");
Serial.print(environmentSensor.readHumidity());
Serial.println(" %");
Serial.println();
}