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


#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

int BUZZ = 0;
int PinLED = 15;
int DHTPIN1 = 2;
int DHTPIN2 = 4;
int DHTType_1 = DHT22;
int DHTType_2 = DHT22;

DHT dht1 (DHTPIN1, DHTType_1);
DHT dht2 (DHTPIN2, DHTType_2);

void setup(){
  dht1.begin();
  dht2.begin();
  pinMode(BUZZ, OUTPUT);
  pinMode(PinLED, OUTPUT);
  Serial.begin(115200);
  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  display.clearDisplay();
  display.setTextColor(WHITE);
}

void dhtA() {
  //read temperature and humidity
  float t1 = dht1.readTemperature();
  float h1 = dht1.readHumidity();
  if (isnan(h1) || isnan(t1)) {
    Serial.println("Failed to read from DHT sensor!");
  }
  // clear display
  display.clearDisplay();
  
  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Suhu: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t1);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Kelembaban: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h1);
  display.print(" %"); 

  if (t1 > 40){
  digitalWrite(PinLED, HIGH);
  tone(BUZZ,2000);
  delay(1000);
  }
  else{
  digitalWrite(PinLED, LOW);
  noTone(BUZZ);  
  }
  display.display(); 

}

void dhtB() {
  //read temperature and humidity
  float t2 = dht2.readTemperature();
  float h2 = dht2.readHumidity();
  if (isnan(h2) || isnan(t2)) {
    Serial.println("Failed to read from DHT sensor!");
  }
  // clear display
  display.clearDisplay();
  
  // display temperature
  display.setTextSize(1);
  display.setCursor(0,0);
  display.print("Suhu: ");
  display.setTextSize(2);
  display.setCursor(0,10);
  display.print(t2);
  display.print(" ");
  display.setTextSize(1);
  display.cp437(true);
  display.write(167);
  display.setTextSize(2);
  display.print("C");
  
  // display humidity
  display.setTextSize(1);
  display.setCursor(0, 35);
  display.print("Kelembaban: ");
  display.setTextSize(2);
  display.setCursor(0, 45);
  display.print(h2);
  display.print(" %"); 
  

  if (t2 > 40){
  digitalWrite(PinLED, HIGH);
  tone(BUZZ,2000);
  delay(1000);
    }
  else{
  digitalWrite(PinLED, LOW);
  noTone(BUZZ);  
  }
  display.display(); 
}

void loop(){
  dhtA();
  delay(2000);
  dhtB();
  delay(2000);
}
$abcdeabcde151015202530fghijfghij