#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);
}