#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <NewPing.h>
#include <DHT.h>
DHT dht(7, DHT22);
#define btMenu 2
#define btOke 3
#define buzzer 6
#define sensorSuhu 7
#define ldrPin A0
// Variabel
int menu = 0;
int Oke = 0;
int triger = 4;
int echo = 5;
int batas = 50;
int inputData = 0;
bool inputMode = false;
LiquidCrystal_I2C lcd(0x27, 16, 2);
OneWire oneWire(sensorSuhu);
DallasTemperature sensors(&oneWire);
NewPing cm(triger,echo,batas);
void setup() {
Serial.begin(9600);
pinMode(btMenu, INPUT);
pinMode(btOke, INPUT);
pinMode(buzzer, OUTPUT);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Pilih Menu:");
}
void loop() {
// Baca
int getMenu = digitalRead(btMenu);
int getOke = digitalRead(btOke);
//int bacaLDR = analogRead(ldrPin);
//int bacaJarak = cm.ping_cm();
// sensors.requestTemperatures();
// float bacaSuhu = sensors.getTempCByIndex(0);
//print Monitor
// Serial.print("GetMenu: ");Serial.print(getMenu);
// Serial.print(" | ");
// Serial.print("GetOKE: ");Serial.print(getOke);
Serial.print("Menu: ");Serial.print(menu);
Serial.print(" | ");
Serial.print("OKE: ");Serial.print(Oke);
Serial.print(" | ");
Serial.println();
//Logika
if (getMenu==1 and Oke==0){
delay(200);
clickk();
menu++;
updateMenu();
if(menu==5){
menu=1;
updateMenu();
}
}
if (getOke==1){
delay(200);
clickk();
Oke++;
if (Oke==2){
delay(200);
updateMenu();
Oke=0;
}
}
if (menu==1 and Oke==1){
menuLDR();
} else if (menu==2 and Oke==1){
menuFlame();
} else if (menu==3 and Oke==1){
menuJarak();
} else if (menu==4 and Oke==1){
menuSuhu();
}
delay(100);
}
void clickk(){
digitalWrite(buzzer, HIGH);
delay(100);
digitalWrite(buzzer, LOW);
}
void updateMenu() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pilih Menu:");
if (menu == 1) {
lcd.setCursor(0,1);lcd.print("1.PembacaanLDR");
} else if (menu == 2) {
lcd.setCursor(0,1);lcd.print("2.SensorFlame");
} else if (menu == 3) {
lcd.setCursor(0,1);lcd.print("3.PembacaanJarak");
} else if (menu == 4) {
lcd.setCursor(0,1);lcd.print("4.SensorSuhu");
}
}
void menuBuzzer(){
Serial.println("Menu Satu");
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Menu Buzzer:");
lcd.setCursor(0, 1);
lcd.print("Blinking");
digitalWrite(buzzer,HIGH);
delay(100);
digitalWrite(buzzer,LOW);
delay(100);
}
void menuLDR(){
int bacaLDR = analogRead(A0);
int kecerahan = map(bacaLDR,1015,0,0,100);
Serial.print("Menu Satu ");
Serial.print("Nilai LDR= ");Serial.println(kecerahan);
// lcd.clear();
lcd.setCursor(0, 0);lcd.print("Menu LDR");
lcd.setCursor(0, 1);lcd.print("Kecerahan:");
lcd.setCursor(10,1);lcd.print(kecerahan);lcd.print("%");lcd.print(" ");
delay(100);
}
void menuFlame(){
int bacaFlame = analogRead(A0);
int DeteksiApi = map(bacaFlame,1015,0,0,100);
Serial.print("Menu Dua ");
Serial.print("Nilai LDR= ");Serial.println(DeteksiApi);
//lcd.clear();
lcd.setCursor(0, 0);lcd.print("Menu Flame");
if (DeteksiApi>50){lcd.setCursor(0, 1);lcd.print("DeteksiApi:Besar");}
else if(DeteksiApi){lcd.setCursor(0,1);lcd.print("DeteksiApi:Kecil");}
delay(100);
}
void menuJarak(){
int bacaJarak = cm.ping_cm();
Serial.print("Menu Tiga ");
Serial.print("Nilai JARAK= ");Serial.println(bacaJarak);
//lcd.clear();
lcd.setCursor(0, 0);lcd.print("Menu Jarak");
lcd.setCursor(0, 1);lcd.print("Nilai:");lcd.print(bacaJarak);lcd.print("cm");
delay(100);
}
void menuSuhu(){
sensors.requestTemperatures();
int bacaSuhu = dht.readTemperature();
Serial.print("Menu Empat ");
Serial.print("Nilai SUHU= ");Serial.println(bacaSuhu);
//lcd.clear();
lcd.setCursor(0, 0);lcd.print("Menu Suhu:");lcd.print(" ");
lcd.setCursor(0, 1);lcd.print("Nilai: ");lcd.print(bacaSuhu);lcd.print((char)223);lcd.print("C");lcd.print(" ");
delay(1000);
}