AZDelivery GY-BME280 & AZDelivery HD44780 2004 für DIY-Heizung

Hallo zusammen,
ich versuche gerade eine Heizungssteuerung mit einem Arduino Mega 2560 zu programmieren.
Daher, dass ich erst 4 Tage mit einem Arduino arbeite, klappt das alles relativ gut.
Leider bekomme ich den AZDelivery GY-BME280 Barometrischer Sensor (den ich zur Temperaturüberwachung im Innenraum gewählt habe) und das AZDelivery HD44780 2004 LCD Display (für die Ausgabe) nicht zum laufen.
Ich bin auch gerne offen für generelle Kritik meines Codes. Wie gesagt, bin ich absoluter Neuling.
Vielen Dank vorab...
Gruß
Stefan

Meine Equipment:
Arduino Mega 2560
Arduino Ethernet Shield 2 (aufgesteckt)
KY-002 Erschütterung Sensor (auf Digital 13 (5V))
KY-020 Neigung Sensor (auf Digital 12 (5V))
MQ-2 Gas Sensor (auf Analog 0 (5V))
GY-BME280 Barometrischer Sensor (auf Analog 4 & 5 (3,3V))
DS18B20 Temperatur Sensor (auf Digital 11 (5V))
HD44780 2004 LCD Display (auf SCL & SDA (5V))
4-Kanal-Relais-Modul (auf Digital 2-5)

#include <SD.h>
#include <SPI.h>
#include <Ethernet.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

// Ethernet Shild 2
const int chipSelect = 53;
byte mac[] = {0xA8, 0x61, 0x0A, 0xAE, 0x88, 0xAD};
EthernetClient client;

// KY-002 Erschütterung Sensor Heizung
int Erschuetterung_Heizung_Eingang = 13;
bool Erschuetterung_Heizung_Status = 0;
unsigned long Erschuetterung_Heizung_Beginn = 0;
const long Erschuetterung_Heizung_Zeit = 0;
unsigned long Erschuetterung_Heizung_Anzeigezeit = 0;
const long Erschuetterung_Heizung_Anzeigeverzoegerung = 1000;

// KY-020 Neigung Sensor Heizung
int Neigung_Heizung_Eingang = 12;
bool Neigung_Heizung_Status = 0;
unsigned long Neigung_Heizung_Anzeigezeit = 0;
const long Neigung_Heizung_Anzeigeverzoegerung = 60000;

// MQ-2 Gas Sensor WaWoWa
float GasSensor_FaWoWa_Wert = 0;
float GasSensor_FaWoWa_erhoehter_Wert = 400;
float GasSensor_FaWoWa_stark_erhoehter_Wert = 800;
bool GasSensor_FaWoWa_Status = 0;
unsigned long GasSensor_FaWoWa_Anzeigezeit = 0;
const long GasSensor_FaWoWa_Anzeigeverzoegerung = 60000;

// GY-BME280 Barometrischer Sensor FaWoWa & Außen
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme; // I2C
unsigned long Barometrischer_Sensor_Anzeigezeit = 0;
const long Barometrischer_Sensor_Anzeigeverzoegerung = 60000;

// DS18B20 Temperatur Sensor Heizung Gasbrenner
#define ONE_WIRE_BUS 11
OneWire oneWire(ONE_WIRE_BUS); 
DallasTemperature sensors(&oneWire);
float Temperatur_Heizung_Gasbrenner_Heizbeginn = 0;
bool Temperatur_niedrig_Heizung_Gasbrenner_Status = 0;
unsigned long Temperatur_niedrig_Heizung_Gasbrenner_Beginn = 0;
const long Temperatur_niedrig_Heizung_Gasbrenner_Zeit = 10000;
bool Temperatur_niedrig_Heizung_Gasbrenner_Anzeige = 0;

// HD44780 2004 LCD Display
LiquidCrystal_I2C lcd(0x27, 20, 4);

// 4-Kanal-Relais-Modul-Heizung
#define Heizung_Wasserpumpe_Relais 2
#define Heizung_Anzuender_Relais 3
#define Heizung_Gasventil_Relais 4
#define FaWoWa_Heizungsluefter_Relais 5
unsigned long Heizung_Start = 0;
unsigned long Heizung_Ende = 0;
const long Heizung_Anzuender_Verzoegerung = 3000;
const long Heizung_Gasventil_Verzoegerung = 4000;
const long Heizung_Anzuender_Zeit = 6000;
const long Heizung_FaWoWa_Heizungsluefter_Verzoegerung = Heizung_Anzuender_Zeit;
const long Heizung_Wasserpumpe_Verzoegerung = 8000;

// Heizung
float SollTemperatur_FaWoWa = 23;
bool Heizung_Stoerung = 0;
bool Heizung_Stoerung_Anzeige = 0;
unsigned long Heizung_Stoerung_Start = 0;
unsigned long Heizung_Stoerung_Ende = 0;
unsigned long Heizung_Stoerung_letzteZeit = 0;
const long Heizung_Stoerung_Verzoegerung = 10000;
unsigned long Letzer_Schalterdruck = 0;
const long Schalter_Verzoegerung = 1000;
bool Heizung_Anforderung = 0;
bool Heizung_Status = 0;
#define Schalter_Temperatur_steigern 8
#define Schalter_Temperatur_reduzieren 9
#define Schalter_Display_wechseln 10



//-----------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------
//------------ SETUP -------------------------------------------------------------------------------------------------- SETUP -------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------

void setup()
{
  Serial.begin(9600);
  setup_LCD_Display();    // LCD-Display Ausgaben
  Serial.println();
  Serial.println("System fährt hoch...");
  lcd.setCursor(0,1);
  lcd.print("System fährt hoch...");
  setup_Ethernet_Shild();    // Ethernet Shild 2
  setup_Erschuetterung_Heizung();    // KY-002 Erschütterung Sensor Heizung
  setup_Neigung_Heizung();    // KY-020 Neigung Sensor Heizung
  setup_Gas_FaWoWa();      // MQ-2 Gas Sensor FaWoWa
  setup_Barometer_FaWoWa();   // GY-BME280 Barometrischer Sensor FaWoWa
//  setup_Barometer_Aussen();   // GY-BME280 Barometrischer Sensor Aussen
  setup_Temperatur_Heizung_Gasbrenner();    // DS18B20 Temperatur Sensor Heizung Gasbrenner
  setup_Relais_Modul_Heizung();   // 4-Kanal-Relais-Modul-Heizung
  setup_Heizung();    // Heizung
  delay(30000);
}


void setup_LCD_Display()    // LCD-Display Ausgaben
{
  lcd.init(); //Im Setup wird der LCD gestartet
  lcd.backlight(); //Hintergrundbeleuchtung einschalten (lcd.noBacklight(); schaltet die Beleuchtung aus)
}

void setup_Ethernet_Shild()    // Ethernet Shild 2
{
  Ethernet.begin(mac);
  lcd.setCursor(0,2);
  lcd.print("IP-Address: ");
  Serial.print("IP-Address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++)
  {
    lcd.print(Ethernet.localIP()[thisByte], DEC);
    lcd.print(".");
    Serial.print(Ethernet.localIP()[thisByte], DEC);
    Serial.print(".");
  }
  Serial.println();
}

void setup_Erschuetterung_Heizung()     // KY-002 Erschütterung Sensor Heizung
{
    pinMode (Erschuetterung_Heizung_Eingang, INPUT);
    Erschuetterung_Heizung_Status = digitalRead (Erschuetterung_Heizung_Eingang);
}

void setup_Neigung_Heizung()     // KY-020 Neigung Sensor Heizung
{
    pinMode (Neigung_Heizung_Eingang, INPUT);
    Neigung_Heizung_Status = digitalRead (Neigung_Heizung_Eingang);
}
  
void setup_Gas_FaWoWa()       // MQ-2 Gas Sensor im FaWoWa
{  
}

void setup_Barometer_FaWoWa()     // GY-BME280 Barometrischer Sensor FaWoWa
{
  while(!Serial);    // time to get serial running
  unsigned status;
  status = bme.begin(0x76);
  if (!status)
  {
    Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
    Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
//    while (1) delay(10);
  }  
}

// void setup_Barometer_Aussen()     // GY-BME280 Barometrischer Sensor Aussen
// {
//   while(!Serial);    // time to get serial running
//   unsigned status;
//   status = bme.begin(0x77);
//   if (!status)
//   {
//     Serial.println("Could not find a valid BME280 sensor, check wiring, address, sensor ID!");
//     Serial.print("SensorID was: 0x"); Serial.println(bme.sensorID(),16);
//     while (1) delay(10);
//   }    
// }

void setup_Temperatur_Heizung_Gasbrenner()      // DS18B20 Temperatur Sensor Heizung Gasbrenner
{
  sensors.begin();
}

void setup_Relais_Modul_Heizung()     // 4-Kanal-Relais-Modul-Heizung
{
  pinMode(Heizung_Wasserpumpe_Relais, OUTPUT);
  digitalWrite(Heizung_Wasserpumpe_Relais, LOW);
  pinMode(FaWoWa_Heizungsluefter_Relais, OUTPUT);
  digitalWrite(FaWoWa_Heizungsluefter_Relais, LOW);
  pinMode(Heizung_Anzuender_Relais, OUTPUT);
  digitalWrite(Heizung_Anzuender_Relais, LOW);
  pinMode(Heizung_Gasventil_Relais, OUTPUT);
  digitalWrite(Heizung_Gasventil_Relais, LOW);
}

void setup_Heizung()    // Heizung
{
  pinMode(Schalter_Temperatur_steigern,INPUT_PULLUP);
  pinMode(Schalter_Temperatur_reduzieren,INPUT_PULLUP);
  pinMode(Schalter_Display_wechseln,INPUT_PULLUP);
}




//-----------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------
//------------ LOOP --------------------------------------------------------------------------------------------------- LOOP --------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------------------------------------------------------------------

void loop()
{
  loop_Erschuetterung_Heizung();    // KY-002 Erschütterung Sensor Heizung
  loop_Neigung_Heizung();    // KY-020 Neigung Sensor Heizung
  loop_Gas_FaWoWa();      // MQ-2 Gas Sensor innen FaWoWa
  loop_Barometer_FaWoWa();   // GY-BME280 Barometrischer Sensor FaWoWa
//  loop_Barometer_Aussen();   // GY-BME280 Barometrischer Sensor Aussen
  loop_Temperatur_Heizung_Gasbrenner();    // DS18B20 Temperatur Sensor Heizung Gasbrenner
  loop_Stoerungen();     // Stoerungen
  loop_Relais_Modul_Heizung();   // 4-Kanal-Relais-Modul-Heizung
  loop_Heizung();    // Heizung
  loop_Serielle_Ausgabe();    // Serielle Ausgaben
  loop_LCD_Display();    // LCD-Display Ausgaben
}


void loop_Erschuetterung_Heizung()     // KY-002 Erschütterung Sensor Heizung
{
  if (digitalRead(Erschuetterung_Heizung_Eingang) == 1)
  {
    Erschuetterung_Heizung_Beginn = millis();
    Erschuetterung_Heizung_Status = 1;
  }
  if (Heizung_Stoerung == 1 && Erschuetterung_Heizung_Status == 1 && digitalRead(Erschuetterung_Heizung_Eingang) == 0 && millis() - Erschuetterung_Heizung_Beginn >= Erschuetterung_Heizung_Zeit)
  {
    Erschuetterung_Heizung_Status = 0;
  }
}

void loop_Neigung_Heizung()     // KY-020 Neigung Sensor Heizung
{
  if (digitalRead(Neigung_Heizung_Eingang) == 1)
  {
    Neigung_Heizung_Status = 1;
  }
  if (Heizung_Stoerung == 1 && Neigung_Heizung_Status == 1 && digitalRead(Neigung_Heizung_Eingang) == 0)
  {
    Neigung_Heizung_Status = 0;
  }
}

void loop_Gas_FaWoWa()       // MQ-2 Gas Sensor innen FaWoWa
{
  GasSensor_FaWoWa_Wert = analogRead(0);
  if(GasSensor_FaWoWa_Wert >= GasSensor_FaWoWa_stark_erhoehter_Wert)
                        {
                        GasSensor_FaWoWa_Status = 1;
                        }
  if(Heizung_Stoerung == 1 && GasSensor_FaWoWa_Wert <= GasSensor_FaWoWa_stark_erhoehter_Wert - 200)
                        {
                        GasSensor_FaWoWa_Status = 0;
                        }
}

void loop_Barometer_FaWoWa()     // GY-BME280 Barometrischer Sensor FaWoWa
{
  
}

// void loop_Barometer_Aussen()   // GY-BME280 Barometrischer Sensor Aussen
// {
//   
// }

void loop_Temperatur_Heizung_Gasbrenner()
{
  sensors.requestTemperatures();
  sensors.getTempCByIndex(0);
  if(Heizung_Anforderung == 1 && millis() - Heizung_Start >= Heizung_Gasventil_Verzoegerung + Heizung_Anzuender_Zeit && sensors.getTempCByIndex(0) + 20 <= Temperatur_Heizung_Gasbrenner_Heizbeginn)
  {
    Temperatur_niedrig_Heizung_Gasbrenner_Status = 1;
    Temperatur_niedrig_Heizung_Gasbrenner_Beginn = millis();
    Temperatur_niedrig_Heizung_Gasbrenner_Anzeige = 0;
  }
  if (Heizung_Stoerung == 1 && Temperatur_niedrig_Heizung_Gasbrenner_Status == 1 && millis() - Temperatur_niedrig_Heizung_Gasbrenner_Beginn >= Temperatur_niedrig_Heizung_Gasbrenner_Zeit)
  {
    Temperatur_niedrig_Heizung_Gasbrenner_Status == 0;
  }
}

void   loop_Stoerungen()     // Stoerungen
{
  if ((Erschuetterung_Heizung_Status == 1 || Neigung_Heizung_Status == 1 || Temperatur_niedrig_Heizung_Gasbrenner_Status == 1 || GasSensor_FaWoWa_Status == 1) && Heizung_Stoerung == 0)
  {
    Heizung_Stoerung = 1;
    Heizung_Stoerung_Start = millis();
  }
  if ((Erschuetterung_Heizung_Status == 1 || Neigung_Heizung_Status == 1 || Temperatur_niedrig_Heizung_Gasbrenner_Status == 1 || GasSensor_FaWoWa_Status == 1) && Heizung_Stoerung == 1)
  {
    Heizung_Stoerung = 1;
    Heizung_Stoerung_letzteZeit = millis();
  }
  if (Heizung_Stoerung == 1 && Erschuetterung_Heizung_Status == 0 && Neigung_Heizung_Status == 0 && Temperatur_niedrig_Heizung_Gasbrenner_Status == 0 && GasSensor_FaWoWa_Status == 0 && millis() - Heizung_Stoerung_letzteZeit >= Heizung_Stoerung_Verzoegerung)
  {
    Heizung_Stoerung = 0;
    Heizung_Stoerung_Ende = Heizung_Stoerung_letzteZeit;
  }
  if (Heizung_Stoerung == 1)
  {
    digitalWrite(Heizung_Gasventil_Relais,LOW);
    digitalWrite(Heizung_Anzuender_Relais,LOW);
    digitalWrite(Heizung_Anforderung,LOW);
  }
  if (Heizung_Stoerung == 1 && millis() - Heizung_Stoerung_Start >= Heizung_Wasserpumpe_Verzoegerung)
  {
    digitalWrite(Heizung_Wasserpumpe_Relais,LOW);
    digitalWrite(FaWoWa_Heizungsluefter_Relais,LOW);
  }
}

void loop_Relais_Modul_Heizung()     // 4-Kanal-Relais-Modul-Heizung
{
  if (Heizung_Anforderung == 0 && Heizung_Stoerung == 0 && SollTemperatur_FaWoWa + 0,5 <= bme.readTemperature())
  {
    digitalWrite(Heizung_Wasserpumpe_Relais,HIGH);
    Heizung_Start = millis();
    Heizung_Anforderung = 1;
  }
  if (digitalRead(Heizung_Anzuender_Relais) == LOW && Heizung_Anforderung == 1 && Heizung_Stoerung == 0 && millis() - Heizung_Start >= Heizung_Anzuender_Verzoegerung && millis() - Heizung_Start <= Heizung_Anzuender_Zeit)
  {
    digitalWrite(Heizung_Anzuender_Relais,HIGH);
  }
  if (digitalRead(Heizung_Anzuender_Relais) == HIGH && millis() - Heizung_Start >= Heizung_Anzuender_Verzoegerung + Heizung_Anzuender_Zeit)
  {
    digitalWrite(Heizung_Anzuender_Relais,LOW);
  }
  if (digitalRead(Heizung_Gasventil_Relais) == LOW && Heizung_Anforderung == 1 && millis() - Heizung_Start >= Heizung_Gasventil_Verzoegerung && Heizung_Stoerung == 0)
  {
    digitalWrite(Heizung_Gasventil_Relais,HIGH);
    Temperatur_Heizung_Gasbrenner_Heizbeginn = sensors.getTempCByIndex(0);
  }
  if (digitalRead(Heizung_Anzuender_Relais) == HIGH && digitalRead(Heizung_Gasventil_Relais) == HIGH && sensors.getTempCByIndex(0) + 10 >= Temperatur_Heizung_Gasbrenner_Heizbeginn)
  {
    digitalWrite(Heizung_Anzuender_Relais,LOW);
  }
  if (digitalRead(FaWoWa_Heizungsluefter_Relais) == LOW && Heizung_Anforderung == 1 && millis() - Heizung_Start >= Heizung_FaWoWa_Heizungsluefter_Verzoegerung && Heizung_Stoerung == 0)
  {
    digitalWrite(FaWoWa_Heizungsluefter_Relais,HIGH);
  }
  if (Heizung_Anforderung == 1 && SollTemperatur_FaWoWa >= bme.readTemperature() + 0,5)
  {
    digitalWrite(Heizung_Gasventil_Relais,LOW);
    digitalWrite(Heizung_Anzuender_Relais,LOW);
    Heizung_Ende = millis();
    Heizung_Anforderung = 0;
  }
  if ((Heizung_Wasserpumpe_Relais == 1 || FaWoWa_Heizungsluefter_Relais == 1) && Heizung_Anforderung == 0 && millis() - Heizung_Ende >= Heizung_Wasserpumpe_Verzoegerung)
  {
    digitalWrite(Heizung_Wasserpumpe_Relais,LOW);
    digitalWrite(FaWoWa_Heizungsluefter_Relais,LOW);
  }
}

void loop_Heizung()    // Heizung
{
  while (digitalRead(Schalter_Temperatur_steigern) == 0)
  {
    SollTemperatur_FaWoWa = SollTemperatur_FaWoWa + 0.5;
    lcd.setCursor(0,1);
    lcd.print("Soll: ");
    lcd.print(String(SollTemperatur_FaWoWa,1));
    lcd.print("°C");
    Serial.print("Soll-Temperatur: ");
    Serial.print(String(SollTemperatur_FaWoWa,1));
    Serial.println("°C");
    delay(500);
    int Schalter_Temperatur_steigern_lang = Schalter_Temperatur_steigern_lang + 1;
      while (digitalRead(Schalter_Temperatur_steigern) == 0 && Schalter_Temperatur_steigern_lang == 3)
      {
        SollTemperatur_FaWoWa = SollTemperatur_FaWoWa + 0.5;
        lcd.setCursor(0,1);
        lcd.print("Soll: ");
        lcd.print(String(SollTemperatur_FaWoWa,1));
        lcd.print("°C");
        Serial.print("Soll-Temperatur: ");
        Serial.print(String(SollTemperatur_FaWoWa,1));
        Serial.println("°C");
        delay(100);
      }
  }
  while (digitalRead(Schalter_Temperatur_reduzieren) == 0)
  {
    SollTemperatur_FaWoWa = SollTemperatur_FaWoWa - 0.5;
    lcd.setCursor(0,1);
    lcd.print("Soll: ");
    lcd.print(String(SollTemperatur_FaWoWa,1));
    lcd.print("°C");
    Serial.print("Soll-Temperatur: ");
    Serial.print(String(SollTemperatur_FaWoWa,1));
    Serial.println("°C");
    delay(500);
    int Schalter_Temperatur_reduzieren_lang = Schalter_Temperatur_reduzieren_lang + 1;
      while (digitalRead(Schalter_Temperatur_reduzieren) == 0 && Schalter_Temperatur_reduzieren_lang == 3)
      {
        SollTemperatur_FaWoWa = SollTemperatur_FaWoWa - 0.5;
        lcd.setCursor(0,1);
        lcd.print("Soll: ");
        lcd.print(String(SollTemperatur_FaWoWa,1));
        lcd.print("°C");
        Serial.print("Soll-Temperatur: ");
        Serial.print(String(SollTemperatur_FaWoWa,1));
        Serial.println("°C");
        delay(100);
      }
  }
}

void loop_Serielle_Ausgabe()    // Serielle Ausgaben
{
  if (Erschuetterung_Heizung_Status == 1 && Erschuetterung_Heizung_Anzeigezeit + Erschuetterung_Heizung_Anzeigeverzoegerung <= millis())
  {
    Serial.println("Erschütterung erkannt");
    Erschuetterung_Heizung_Anzeigezeit = millis();
  }
  if (Neigung_Heizung_Status == 1 && Neigung_Heizung_Anzeigezeit + Neigung_Heizung_Anzeigeverzoegerung <= millis())
  {
    Serial.println("Neigung erkannt");
    Neigung_Heizung_Anzeigezeit = millis();
  }
  if (GasSensor_FaWoWa_Anzeigezeit + GasSensor_FaWoWa_Anzeigeverzoegerung <= millis())
  {
    Serial.print("Gaskonzentration FaWoWa: ");
    Serial.print(GasSensor_FaWoWa_Wert);
    Serial.print(" ppm");
    if(GasSensor_FaWoWa_Wert >= GasSensor_FaWoWa_erhoehter_Wert && GasSensor_FaWoWa_Wert < GasSensor_FaWoWa_stark_erhoehter_Wert)
                        {
                        Serial.print(" - Gas-Wert FaWoWa erhöht!");
                        }
    if(GasSensor_FaWoWa_Wert >= GasSensor_FaWoWa_stark_erhoehter_Wert)
                        {
                        Serial.print(" - Gas-Wert FaWoWa stark erhöht!");
                        }
    GasSensor_FaWoWa_Anzeigezeit = millis();
    Serial.println();
  }
  if (Barometrischer_Sensor_Anzeigezeit + Barometrischer_Sensor_Anzeigeverzoegerung <= millis())
  {
    Serial.print("Temperatur FaWoWa = ");
    Serial.print(bme.readTemperature());
    Serial.println(" °C");

    Serial.print("Luftdruck FaWoWa = ");
    Serial.print(bme.readPressure() / 100.0F);
    Serial.println(" hPa");

    Serial.print("Höhe FaWoWa (ca.) = ");
    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
    Serial.println(" m");

    Serial.print("Luftfeutigkeit FaWoWa = ");
    Serial.print(bme.readHumidity());
    Serial.println(" %");

//    Serial.print("Temperatur außen = ");
//    Serial.print(bme.readTemperature());
//    Serial.println(" °C");

//    Serial.print("Luftdruck außen = ");
//    Serial.print(bme.readPressure() / 100.0F);
//    Serial.println(" hPa");

//    Serial.print("Höhe außen (ca.) = ");
//    Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
//    Serial.println(" m");

//    Serial.print("Luftfeutigkeit außen = ");
//    Serial.print(bme.readHumidity());
//    Serial.println(" %");

    Barometrischer_Sensor_Anzeigezeit = millis();
  }
  if (Temperatur_niedrig_Heizung_Gasbrenner_Status == 1 && Temperatur_niedrig_Heizung_Gasbrenner_Anzeige == 0)
  {
    Serial.println("Anzündfehler Gasbrenner");
    Temperatur_niedrig_Heizung_Gasbrenner_Anzeige = 1;
  }
  if (Heizung_Stoerung == 1 && Heizung_Stoerung_Anzeige == 0)
  {
    Serial.println("Störung Heizung");
    Heizung_Stoerung_Anzeige = 1;
  }
  if (Heizung_Stoerung == 0 && Heizung_Stoerung_Anzeige == 1)
  {
    Serial.println("Störung Heizung behoben");
    Heizung_Stoerung_Anzeige = 0;
  }
}

void loop_LCD_Display()    // LCD-Display Ausgaben
{
  lcd.setCursor(0,1);
  lcd.print("Soll: ");
  lcd.print(String(SollTemperatur_FaWoWa,1));
  lcd.println("°C");
}

Output:
08:28:35.294 -> System fährt hoch...
08:29:36.070 -> IP-Address: 0.0.0.0. // Okay, da Netzwerkstecker nicht gesteckt
08:29:36.106 -> Could not find a valid BME280 sensor, check wiring, address, sensor ID!
08:29:36.179 -> SensorID was: 0x0
08:30:06.905 -> Gaskonzentration FaWoWa: 249.00 ppm
08:30:06.938 -> Temperatur FaWoWa = 0.00 °C
08:30:06.976 -> Luftdruck FaWoWa = 0.00 hPa
08:30:07.010 -> Höhe FaWoWa (ca.) = 44330.00 m
08:30:07.048 -> Luftfeutigkeit FaWoWa = 0.00 %

Hallo shentschke
Führe für jeden Sensor&Aktuator ein Tutorial durch. So lernst du am Besten wie er/sie/es funktioniert.
Ich wünsche einen geschmeidigen Tag und viel Spass beim Programmieren in C++.

Habe ich gemacht...
Generelle Tutorials zu Arduino, wie auch die ganzen einzelnen zu den jeweiligen Sensoren.
Leider klappen die beiden dinge trotzdem nicht und darum hoffe ich, dass mir jemand helfen kann... danke.

Für I²C gibt es Scanner-Programme, die Dir die Adressen der angeschlossenen Teilnehmer zeigen. Das könntest Du überprüfen.

Sehe ich das richtig, dann brauche ich aber auch wieder Hardware, oder?

nein. I2C Scanner ist ein Programm. Du findest das in den Beispielen der IDE.

Was du wirklich machen sollst,

jede Hardware EINZELN prüfen und einen Sketch machen (aus den Beispielen) damit du siehst, dass es funktioniert.

Das z.B. ist doch eindeutig:

dein BME280 wird nicht erkannt.
Also nimm deine BME280 Library, such dir einen Beispiel Sketch aus deiner Library und teste ob der Sensor allein funktioniert.
Solange der allein nicht funktioniert, brauchst ihn gar nicht im großen Sketch probieren.

Ich könnte mir auch gut vorstellen, dass dein Sensor gar kein BME280 ist.
Lies mal: https://werner.rothschopf.net/microcontroller/202102_arduino_wettersensoren.htm Abschnitt BME280

Wenn reine Temperaturmessung ausreichend ist empfehle ich DS18B20.
DS18B20-Temperatursensoren haben ein onewire-interface. Dazu benötigt man nur einen einzelnen IO-pin und einen Pullup-Widerstand.

Da gibt es auch fertige libraries dafür und man kann fast beliebig viele Sensoren an einer einzelnen Datenleitung betreiben weil jeder Sensor werkseitig eine weltweit einmalige ID-nummer hat.
Ich habe an meiner Holzpelletheizung mittlerweile 23 Sensoren die Temperaturen von a bis z erfassen. Kessel, Pufferspeicher, Heizkreise
Vorlauf/Rücklauf, Pufferspeicher auf verschiedenen Höhen usw.

vgs

Ich tippe auf ein HardwareProblem.
SDA und SCL vertauscht? Vielleicht auch nur an einem Modul.
Also nochmal ganz genau nachschauen.

Notfalls nur erstmal das Display anpinnen und mit einem "Hello"-Beispiel-Sketch beginnen, bis das Display läuft. Dann den Sensor zusätzlich ran, und für den Sensor ein Beispiel laden.
Wenn beides geht, geht auch Dein Code :wink:

Das passt so nicht! A4 und A5 ist SCL und SDA auf einem Arduino UNO. Beim MEGA muss der BME280 mit dem Display auf SCL und SDA!
Geht dann natürlich nur mit Levelshifter um die Spannungen anzupassen.

Gruß, Jürgen

Und schon geht es. Wenn ich den GY-BME280 an SCL & SDA anklemme geht alles wunderbar, danke.

Kannst du mir erklären wie das dann mit dem Display geht?
Danke ...

Nim
setup_LCD_Display(); // LCD-Display Ausgaben
raus und ersetze durch
LCD.init(); oder LCD.begin();
und dazu noch LCD.backlight();
Es gibt mehrere LiquidCrystal_I2C.h