#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
int buttonState = LOW;
int lastButtonState = LOW;
bool systemState = false;
const int button = 19;
const int DHTPin = 4;
const int led1 = 5;
const int led2 = 18;
float temperature;
float humidity;
DHT dht(DHTPin, DHT22);
LiquidCrystal_I2C led(0x27, 16, 2);
// © Copyright by Ararya Arka XII5
String staticMessage = "ATS ICT XII";
const int delayTime = 500;
const int scrollingTime = 100;
const int bgColor = SSD1306_WHITE;
const int offColor = SSD1306_BLACK;
void setup() {
Serial.begin(115200);
pinMode(button, INPUT_PULLUP);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C);
led.init();
led.backlight();
dht.begin();
// © Copyright by Ararya Arka XII5
led.setCursor(0, 0);
led.print(staticMessage);
led.setCursor(0, 1);
led.print("Initializing...");
delay(2000);
}
void displayData(float temp, float hum, bool useOLED) {
if (useOLED) {
oled.clearDisplay();
oled.setTextSize(2);
oled.setTextColor(SSD1306_BLACK);
oled.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, bgColor);
oled.setCursor(0, 0);
oled.print("Temp:"+String(temp, 1) +"C");
// © Copyright by Ararya Arka XII5
oled.setCursor(0, 30);
oled.print("Hum:" + String(hum, 1) +"%");
oled.display();
} else {
led.clear();
led.setCursor(0, 0);
(temp > 15 ) ? led.print("High Temperature") : led.print("Low Temperature");
led.setCursor(0, 1);
(temp > 15 ) ? led.print("Panas Bet Woe!") : led.print("Santaii ^_^");
delay(2000);
// © Copyright by Ararya Arka XII5
led.clear();
led.setCursor(0, 1);
led.print("Temp: ");
led.print(temp, 1);
led.print("Celc");
led.setCursor(0, 0);
led.print("Humidity: ");
led.print(hum, 1);
led.print("%");
// © Copyright by Ararya Arka XII5
}
}
void turnOff(const int green,const int red){
oled.clearDisplay();
oled.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, offColor);
oled.display();
led.clear();
digitalWrite(green, LOW);
digitalWrite(red, LOW);
}
void lampOn(const int green,const int red){
if(temperature <= 15){
digitalWrite(red, LOW);
digitalWrite(green, HIGH);
}
if(temperature > 15){
digitalWrite(green, LOW);
digitalWrite(red, HIGH);
}
// © Copyright by Ararya Arka XII5
}
void loop() {
temperature = dht.readTemperature();
humidity = dht.readHumidity();
// © Copyright by Ararya Arka XII5
buttonState = digitalRead(button);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
systemState = !systemState;
if (systemState) {
displayData(temperature, humidity, true);
displayData(temperature, humidity, false);
lampOn(led1, led2);
Serial.println("System ON");
} else {
turnOff(led1, led2);
Serial.println("System OFF");
}
}
delay(50);
}
lastButtonState = buttonState;
}
// © Copyright by Ararya Arka XII5