#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