#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <Servo.h>
Servo spray; //initial motor servo untuk disinfectant
DHT dht(13,DHT22);
#define Heater 8 // Pin relay Heater
#define Cooler 7 // Pin Relay Cooler
#define UVlamp 4 // Pin Relay UV lamp
const int TrigPin = 11 ; //Trigpin sensor jarak dalam untuk deteksi box
const int EchoPin = 10 ; //Echopin sensor jarak dalam untuk deteksi box
float timer,jarak;
Adafruit_SSD1306 oled(128, 64, &Wire, -1);
void setup()
{
//layar oled
Serial.begin (9600);
dht.begin();
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
oled.clearDisplay ();
oled.setTextColor (WHITE);
oled.setTextSize (1);
oled.display();
//sensor jarak
pinMode(EchoPin, INPUT); //pin Echo sebagai input
pinMode(TrigPin, OUTPUT); //pin Trigger sebagai Output
//relay heater,cooler dan uv lamp
pinMode(Heater, OUTPUT);
pinMode(Cooler, OUTPUT);
pinMode(UVlamp, OUTPUT);
//servo spray
spray.attach(9);
}
void loop()
{ delay(2000);
float temp = dht.readTemperature();
oled.clearDisplay ();
oled.setCursor (32,0);
oled.print("Kelompok 5");
oled.setCursor (0,10);
oled.print("Suhu : ");
oled.print(temp);
oled.print(" C");
oled.setCursor(0,20);
oled.print("Kondisi UV : ");
oled.setCursor(0,30);
oled.print("Kondisi BOX: ");
// suhu, heater & Cooler
if (temp >= 31)
{
digitalWrite(Cooler, HIGH);
digitalWrite(Heater, LOW);
oled.setCursor(0,40);
oled.print("Pendingin Aktif");
}
else if (temp < 30)
{
digitalWrite(Cooler, LOW);
digitalWrite(Heater, HIGH);
oled.setCursor(0,40);
oled.print("Heater Aktif");
}
if (temp >=30 && temp <31)
{
digitalWrite(Cooler, LOW);
digitalWrite(Heater, LOW);
oled.setCursor(0,40);
oled.print("Suhu Normal");
}
digitalWrite(TrigPin, LOW);
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
timer = pulseIn(EchoPin,HIGH); //waktu ketika menerima gelombang input
jarak = timer/58; //perhitungan variable jarak terhadap variable waktu input
delay(1000);
//program spray dan UVlamp
if (jarak <= 30)
{
spray.write(90);
delay(5000); //delay untuk UV lamp
digitalWrite(UVlamp, HIGH);
oled.setCursor(80,20);
oled.print("Aktif");
oled.setCursor(80,30);
oled.print("Terisi");
}
else
{
spray.write(0);
digitalWrite(UVlamp, LOW);
oled.setCursor (80,20);
oled.print("OFF");
oled.setCursor(80,30);
oled.print("Kosong");
}
oled.display();
}