#include "DHT.h"
#include <LiquidCrystal_I2C.h>
#define DHTPIN 12 // DHT PIN 2
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
LiquidCrystal_I2C lcd(0x27, 20, 4);
DHT dht(DHTPIN, DHTTYPE);
int trig = 7;
int echo = 6;
long duration, distance;
#define bd 3
#define bu 2
#define bo 4
#define bb 5
#define led 10
#define pause 100
byte up[] = {
0x04,
0x0E,
0x1F,
0x04,
0x04,
0x04,
0x04,
0x04
};
byte down[] = {
0x04,
0x04,
0x04,
0x04,
0x04,
0x1F,
0x0E,
0x04
};
byte ok[] = {
0x00,
0x1B,
0x1B,
0x00,
0x11,
0x11,
0x11,
0x1F
};
byte back[] = {
0x01,
0x03,
0x07,
0x1F,
0x1F,
0x07,
0x03,
0x01
};
void setup(){
pinMode(trig, OUTPUT);
pinMode(echo, INPUT);
pinMode(bd, INPUT);
pinMode(bu, INPUT);
pinMode(bo, INPUT);
pinMode(bb, INPUT);
pinMode(led, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.createChar(0, up);
lcd.createChar(1, down);
lcd.createChar(2, ok);
lcd.createChar(3, back);
}
void loop() {
if (digitalRead(bo) == HIGH) {
delay(pause);
while (digitalRead(bo) == HIGH) {}
lcd.clear();
setting();
}
lcd.setCursor(3, 0);
lcd.print("PUNAKAWAN");
lcd.setCursor(0, 1);
lcd.print("[");
lcd.write(byte(1));
lcd.print("] ");
lcd.print("[");
lcd.write(byte(0));
lcd.print("] ");
lcd.print("[");
lcd.write(byte(2));
lcd.print("] ");
lcd.print("[");
lcd.write(byte(3));
lcd.print("] ");
//lcd.print("[-] [+] [OK] []");
}
void setting () {
//MENU
//--------------------------------------------------
setMENU1:
if (digitalRead(bo) == HIGH) {
delay(pause);
while (digitalRead(bo) == HIGH) {}
lcd.clear();
goto setSUBMENU1;
}
else if (digitalRead(bu) == HIGH) {
delay(pause);
while (digitalRead(bu) == HIGH) {}
lcd.clear();
goto setMENU4;
}
else if (digitalRead(bd) == HIGH) {
delay(pause);
while (digitalRead(bd) == HIGH) {}
lcd.clear();
goto setMENU2;
}
else if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setEXIT;
}
lcd.setCursor(0, 0);
lcd.print(">humi pot ");
lcd.setCursor(0, 1);
lcd.print(" suhu jarak");
goto setMENU1;
//--------------------------------------------------
setMENU2:
if (digitalRead(bo) == HIGH) {
delay(pause);
while (digitalRead(bo) == HIGH) {}
lcd.clear();
goto setSUBMENU2;
}
else if (digitalRead(bu) == HIGH) {
delay(pause);
while (digitalRead(bu) == HIGH) {}
lcd.clear();
goto setMENU1;
}
else if (digitalRead(bd) == HIGH) {
delay(pause);
while (digitalRead(bd) == HIGH) {}
lcd.clear();
goto setMENU3;
}
else if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setEXIT;
}
lcd.setCursor(0, 0);
lcd.print(" humi pot ");
lcd.setCursor(0, 1);
lcd.print(">suhu jarak");
goto setMENU2;
//--------------------------------------------------
setMENU3:
if (digitalRead(bo) == HIGH) {
delay(pause);
while (digitalRead(bo) == HIGH) {}
lcd.clear();
goto setSUBMENU3;
}
else if (digitalRead(bu) == HIGH) {
delay(pause);
while (digitalRead(bu) == HIGH) {}
lcd.clear();
goto setMENU2;
}
else if (digitalRead(bd) == HIGH) {
delay(pause);
while (digitalRead(bd) == HIGH) {}
lcd.clear();
goto setMENU4;
}
else if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setEXIT;
}
lcd.setCursor(0, 0);
lcd.print(" humi >pot ");
lcd.setCursor(0, 1);
lcd.print(" suhu jarak");
goto setMENU3;
//--------------------------------------------------
setMENU4:
if (digitalRead(bo) == HIGH) {
delay(pause);
while (digitalRead(bo) == HIGH) {}
lcd.clear();
goto setSUBMENU4;
}
else if (digitalRead(bu) == HIGH) {
delay(pause);
while (digitalRead(bu) == HIGH) {}
lcd.clear();
goto setMENU3;
}
else if (digitalRead(bd) == HIGH) {
delay(pause);
while (digitalRead(bd) == HIGH) {}
lcd.clear();
goto setMENU1;
}
else if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setEXIT;
}
lcd.setCursor(0, 0);
lcd.print(" humi pot ");
lcd.setCursor(0, 1);
lcd.print(" suhu >jarak");
goto setMENU4;
//SUBMENU
//--------------------------------------------------
setSUBMENU1:
if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setMENU1;
}
float hum = dht.readHumidity();
lcd.setCursor(0,0);
lcd.print("HUM :");
lcd.print(hum);
lcd.print("% ");
goto setSUBMENU1;
//--------------------------------------------------
setSUBMENU2:
if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setMENU2;
}
float suhu = dht.readTemperature();
lcd.setCursor(0,0);
lcd.print("TEMP:");
lcd.print(suhu);
lcd.print((char)223);
lcd.print("C ");
goto setSUBMENU2;
//--------------------------------------------------
setSUBMENU3:
if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setMENU3;
}
int out = map(analogRead(0), 1, 1024, 100, 0);
lcd.setCursor(0,0);
lcd.print("POT:");
lcd.print(out);
lcd.print("% ");
goto setSUBMENU3;
//--------------------------------------------------
setSUBMENU4:
if (digitalRead(bb) == HIGH) {
delay(pause);
while (digitalRead(bb) == HIGH) {}
lcd.clear();
goto setMENU4;
}
digitalWrite(trig, LOW);
delayMicroseconds(2);
digitalWrite(trig, HIGH);
delayMicroseconds(10);
digitalWrite(trig, LOW);
duration = pulseIn(echo, HIGH);
distance = (duration / 2) / 29.1;
lcd.setCursor(0,0);
lcd.print("JARAK:");
lcd.print(distance);
lcd.print("cm ");
goto setSUBMENU4;
//--------------------------------------------------
setEXIT:
lcd.clear();
delay(pause);
}