/**
ESP32 + DHT22 Example for Wokwi
https://wokwi.com/arduino/projects/322410731508073042
*/
#include "DHTesp.h"
//#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.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);
const byte DHT_PIN = 15;
byte Rele = 12;
int counter = 0;
bool Flag=true;
bool PrevFlag=false;
DHTesp dhtSensor;
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
pinMode(Rele, OUTPUT);
// SSD1306_SWITCHCAPVCC = generate display voltage from 3.3V internally
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) { // Address 0x3D for 128x64
Serial.println(F("SSD1306 allocation failed"));
for(;;); // Don't proceed, loop forever
} display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(5,0);
display.print("Iam Jelly Fish --'");
display.display();
delay(3000);
display.clearDisplay();
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
if (isnan(data.temperature) || isnan(data.humidity)) {
Serial.println("Failed to read from DHT sensor!");
}
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
delay(100);
if (data.temperature <= 20 || data.humidity >=40){
digitalWrite(Rele, HIGH);
counter++;
} else {
digitalWrite(Rele, LOW);
}
// 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(data.temperature);
display.print(" ");
display.setTextSize(1);
display.cp437(true);
display.write(167);
display.setTextSize(1);
display.print("C");
// display humidity
display.setTextSize(1);
display.setCursor(0, 35);
display.print("Kelembaban: ");
display.setTextSize(1);
display.setCursor(0, 45);
display.print(data.humidity);
display.print(" %");
//cnt
display.setTextSize(1);
display.setCursor(80, 35);
display.print("Counter: ");
display.setTextSize(1);
display.setCursor(80, 45);
display.print(counter);
display.print(" x");
display.display();
}