#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <DHT.h>


#define DHTPIN 4          
#define DHTTYPE DHT22     
DHT dht(DHTPIN, DHTTYPE); // Initialisierung des DHT-Sensors

// Definition für das OLED-Display
#define SCREEN_WIDTH 128  // Breite des Displays
#define SCREEN_HEIGHT 64  // Höhe des Displays
#define OLED_RESET -1     // Kein Reset-Pin benötigt
#define SDA_PIN 8         // I2C SDA an GPIO8
#define SCL_PIN 9         // I2C SCL an GPIO9
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  // Start 
  Serial.begin(115200);

  // Initialisierung
  Wire.begin(SDA_PIN, SCL_PIN);

  // Initialisiere DHT-Sensor
  dht.begin();
  Serial.println("DHT-Sensor initialisiert.");

  // Initialisiere OLED-Display
  if (!display.begin(SSD1306_PAGEADDR, 0x3C)) { // 0x3C ist die typische I2C-Adresse
    Serial.println("Fehler beim Initialisieren des OLED-Displays!");
    while (true); // Endlos-Loop bei Fehler
  }

  // Begrüßung 
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0, 0);
  display.println("System Start...");
  display.display();
  delay(2000); // Zeige die Begrüßung für 2 Sekunden
}

void loop() {
  // Lese Temperatur- und Feuchtigkeitswerte vom DHT-Sensor
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Prüfe auf Fehler
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println("Fehler beim Lesen des DHT-Sensors!");
    display.clearDisplay();
    display.setCursor(0, 0);
    display.println("Sensor Fehler!");
    display.display();
    delay(2000);
    return;
  }

  // Ausgabe 
  Serial.print("Temperatur: ");
  Serial.print(temperature);
  Serial.println(" °C");
  Serial.print("Feuchtigkeit: ");
  Serial.print(humidity);
  Serial.println(" %");

  // Display anzeige
  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.println("DHT22 Sensordaten:");
  display.setTextSize(2);
  display.print("Temp: ");
  display.print(temperature);
  display.println(" C");
  display.print("Feucht: ");
  display.print(humidity);
  display.println(" %");
  display.display();

  // Warte 2 Sekunden 
  delay(2000);
}
esp:0
esp:1
esp:2
esp:3
esp:4
esp:5
esp:6
esp:7
esp:8
esp:9
esp:10
esp:18
esp:19
esp:GND.1
esp:3V3.1
esp:3V3.2
esp:GND.2
esp:RST
esp:GND.3
esp:GND.4
esp:5V.1
esp:5V.2
esp:GND.5
esp:GND.6
esp:GND.7
esp:GND.8
esp:GND.9
esp:RX
esp:TX
esp:GND.10
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA