/***************************************************
  Juni 2025 03_HTU_OLED.ino
  This is an example for the HTU21D-F Humidity & Temp Sensor including OLED 0,96"

  These displays use I2C to communicate, 2 pins are required to   interface
 ****************************************************/

#include "myOLED_u8g2.h"
#include <Adafruit_HTU21DF.h>

// Connect Vin to 3-5VDC
// Connect GND to ground
// Connect SCL to I2C clock pin (A5 on UNO)
// Connect SDA to I2C data pin (A4 on UNO)

Adafruit_HTU21DF htu = Adafruit_HTU21DF();

int displayTime = 5000;   // 5 sek

void setup() {
  Serial.begin(115200);     // setze die gleiche Geschwindigkeit am seriellen Monitor
  Serial.println("\n");
  Serial.println("HTU21D-F test mit OLED-Ausgabe");

  if (!htu.begin()) {
    Serial.println("Couldn't find sensor!");
    while (1);    // Endlosschleife
  }

  Serial.println("Start Sensor Test HTU21\n");

  initOLED();   // siehe myOLED_u8g2.h
  showLogo();
  delay(displayTime);

  snprintf(line1, sizeof(line1), "HTU_OLED.ino");  // Überschreibt line1 mit "Hallo", Zeichenlänge wird geprüft
  snprintf(line2, sizeof(line2), "HTU21 + OLED");  // Überschreibt line1 mit "Hallo", Zeichenlänge wird geprüft
  snprintf(line3, sizeof(line3), "    Juni 2025");  // Überschreibt line1 mit "Hallo", Zeichenlänge wird geprüft
  snprintf(line4, sizeof(line4), "      *******");  // Überschreibt line1 mit "Hallo", Zeichenlänge wird geprüft
  showTextOLED(lines, 4);       // line1, line2, line3 werden angezeigt. line4, line5 werden ignoriert  
  delay(displayTime);

}

void loop() {
    float temp = htu.readTemperature();
    float rel_hum = htu.readHumidity();

    Serial.print("Temp: "); Serial.print(temp); Serial.print(" C");
    Serial.print("\t\t");
    Serial.print("Humidity: "); Serial.print(rel_hum); Serial.println(" \%");

    showSensor("  HTU21DF", temp, rel_hum);   // siehe myOLED_u8g2.h  

    delay(displayTime);    // warte 5 Sekunden
}
