/**
   ESP32 + DHT22 Example for Wokwi
   
   https://wokwi.com/arduino/projects/322410731508073042
*/

#include "DHTesp.h"
#include <U8g2lib.h>

// U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0 | U8G_I2C_OPT_NO_ACK | U8G_I2C_OPT_FAST); // Fast I2C / TWI
// U8X8_SSD1306_128X64_NONAME_HW_I2C u8g();
U8X8_SSD1306_128X64_NONAME_HW_I2C display(U8X8_PIN_NONE);
U8X8_SSD1306_128X64_NONAME_HW_I2C display2(U8X8_PIN_NONE);

#define DISPLAY_I2C_ADDRESS 0x3C
#define DISPLAY_I2C_ADDRESS2 0x3D
// 0x7a

const int DHT_PIN = 15;

DHTesp dhtSensor;

void setup() {
  Serial.begin(115200);
  dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
  display.setI2CAddress(DISPLAY_I2C_ADDRESS * 2);
  display.begin();
  display.setPowerSave(0);
  display.setFont(u8x8_font_pxplusibmcgathin_f);
  display2.setI2CAddress(DISPLAY_I2C_ADDRESS2 * 2);
  display2.begin();
  display2.setPowerSave(0);
  display2.setFont(u8x8_font_pxplusibmcgathin_f);
}

void loop() {
  TempAndHumidity  data = dhtSensor.getTempAndHumidity();
  // display.setFont(u8x8_font_chroma48medium8_r);
  char result[8]; // Buffer big enough for 7-character float
  dtostrf(data.temperature, 6, 2, result); // Leave room for too large numbers!
  display.drawString(0, 1, result);
  display2.drawString(0, 1, "hello world");
  Serial.println("Temp: " + String(data.temperature, 2) + "°C");
  Serial.println("Humidity: " + String(data.humidity, 1) + "%");
  Serial.println("---");
  delay(1000);
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
dht1:VCC
dht1:SDA
dht1:NC
dht1:GND
oled2:GND
oled2:VCC
oled2:SCL
oled2:SDA
oled1:GND
oled1:VCC
oled1:SCL
oled1:SDA