#include <U8glib.h>   //Bibliothek für das Display
#include <DHT22.h>    //Bibliothek des DHT22  https://github.com/dvarrel/DHT22

constexpr uint8_t DHT22_PIN {2};
constexpr uint8_t REGEN_PIN {3};

U8GLIB_SH1106_128X64 oled(U8G_I2C_OPT_NONE);  //Display hat den Namen "oled" bekommen
DHT22 dht(DHT22_PIN);  //DigitalPin 2 und der Typ DHT22
float temp;
float Lfeuchte;
char regen[5];

void Display_Ausgang() {
  oled.setFont(u8g_font_helvB08);  //Schriftgröße8, Helvetica bold

  //Ausgabe der Temperatur in Zeile 1
  oled.setPrintPos(0, 15);     //Position des Cusor auf X=0, Y=15 Pixel
  oled.print("Temperatur: ");  //schreibt bei der oben genanten Position "Temperatur:"
  oled.setPrintPos(75, 15);    //Position des Cusor auf X=75, Y=15 Pixel
  oled.print(temp);            //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.setPrintPos(105, 15);  //Position des Cusor auf X=105, Y=15 Pixel
  oled.write(0xb0);            //Code für GRAD-Zeichen
  oled.print("C");             //schreibt bei der oben genanten Position "C"

  //Ausgabe der Luftfeuchte in Zeile 2
  oled.setPrintPos(0, 40);      //Position des Cusor auf X=0, Y=40 Pixel
  oled.print("Luftfeuchte: ");  //schreibt bei der oben genanten Position "Luftfeuchte:"
  oled.setPrintPos(75, 40);     //Position des Cusor auf X=75, Y=40 Pixel
  oled.print(Lfeuchte);         //schreibt die ausgewertete Temperatur durch die Variable(temp)auf die oben genente Position
  oled.setPrintPos(90, 40);    //Position des Cusor auf X=90, Y=40 Pixel
  oled.print("%");              //schreibt bei der oben genanten Position "%"

  //Ausgabe Regen_Status in Zeile 3
  oled.setPrintPos(0, 62);   //Position des Cusor auf X=0, Y=62 Pixel
  oled.print("Regen: ");     //schreibt bei der oben genanten Position "Regen:"
  oled.setPrintPos(75, 62);  //Position des Cusor auf X=75, Y=62 Pixel
  oled.print(regen);         //Schreibt dur die Variable regen ("ja"/"nein")
}

void setup() {
  pinMode(REGEN_PIN, INPUT);
}

void loop() {
  // Wird wg. dem delay nur alle 15 Sekunden aktualisiert
  if (digitalRead(REGEN_PIN)) {
    snprintf(regen,sizeof(regen),"ja");
  }  else {
    snprintf(regen,sizeof(regen),"nein");
  }


  temp = dht.getTemperature();  // put your main code here, to run repeatedly:
  Lfeuchte = dht.getHumidity();

  oled.firstPage();

  do {
    Display_Ausgang();
  } while (oled.nextPage());  //solange die nähste Seite "wahr" ist

  delay(15000);  //Eine Viertel Minute Zeitverzögerung
}
Regen
ja
nein