/*
This program was produced by Wokwi.com Standard
Project : Test Evaluation DTS-PROA IoT Batch 4 (simulasi 1)
Version : 1.0.0.0
Date : 06/10/2022
Author : La Ode Muhamad Idris
IG : https://www.instagram.com/solderungu/
Company : Kakarobot ID - Semarang University
Chip type : ESP32 Dev Module
Program type : Simulation wokwi.com (competible with Arduino IDE)
Part List : OLED SSD1306 128x64
DHT22 (1 pcs)
LED RED (1 pcs)
LED YELLOW (1 pcs)
LED BLUE (1 pcs)
BUZZER (1 pcs)
Library list : Adafruit SSD1306
Adafruit GFX Library
DHT sensor library for ESPx
*/
#include <DHTesp.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define dhtPin 15
#define buzPin 2
#define ledPinM 4
#define ledPinK 5
#define ledPinB 18
#define ledMOn digitalWrite(ledPinM, HIGH)
#define ledMOff digitalWrite(ledPinM, LOW)
#define ledKOn digitalWrite(ledPinK, HIGH)
#define ledKOff digitalWrite(ledPinK, LOW)
#define ledBOn digitalWrite(ledPinB, HIGH)
#define ledBOff digitalWrite(ledPinB, LOW)
// #define buzOn digitalWrite(buzPin, HIGH) //DI REKOMENSDASIKAN
// #define buzOff digitalWrite(buzPin, LOW) //DI REKOMENSDASIKAN
#define buzOn tone(buzPin, 700) //OPSIONAL BUZZER ON - UNTUK ESP32 PERLU DEFINE LEDC DI VOID SETUP
#define buzOff noTone(buzPin) //OPSIONAL BUZZER OFF - UNTUK ESP32 PERLU DEFINE LEDC DI VOID SETUP
DHTesp dht;
Adafruit_SSD1306 oled = Adafruit_SSD1306(128, 64, &Wire);
float suhu = 0;
int count=0;
String ketSuhu[] = {
"SUHU RENDAH",
"SUHU CUKUP",
"SUHU PANAS"
};
void setup() {
Serial.begin(115200);
pinMode(buzPin, OUTPUT);
pinMode(ledPinM, OUTPUT);
pinMode(ledPinK, OUTPUT);
pinMode(ledPinB, OUTPUT);
dht.setup(dhtPin, DHTesp::DHT22);
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.setTextSize(1);
oled.setTextColor(WHITE);
ledcAttachPin(buzPin, 0);
ledcSetup(0, 400, 8);
}
void loop() {
oled.clearDisplay();
oled.setCursor(5, 0);
oled.println("=SMART KANDANG AYAM=");
TempAndHumidity data = dht.getTempAndHumidity();
suhu = data.temperature;
oled.setCursor(0,20); oled.print("Temp: " + String(suhu, 2) + " 'C");
oled.setCursor(0,40);
if (suhu > 35){ //KONIDISI SUHU KANDANG TINGGI (DIATAS 35 DERAJAT CELCIUS)
oled.print(ketSuhu[2]);
count++;
if(count>1){
count=-1;
buzOn;
}else{
buzOff;
}
ledMOn;
ledKOff;
ledBOff;
} else if(suhu >=29){ //KONIDISI SUHU KANDANG CUKUP (ANTARA 29-35 DERAJAT CELCIUS)
oled.print(ketSuhu[1]);
buzOff;
ledMOff;
ledKOn;
ledBOff;
} else{ //KONIDISI SUHU KANDANG RENDAH (DIBAWAH 29 DERAJAT CELCIUS)
oled.print(ketSuhu[0]);
buzOff;
ledMOff;
ledKOff;
ledBOn;
}
oled.display();
}