#include <LiquidCrystal_I2C.h>
#include <NewPing.h>
#include <IRremote.h>
const int MAX_DISTANCE = 400;
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPin1 = 2; // Pin tombol 1
const int buttonPin2 = 3; // Pin tombol 2
const int TRIGGER_PIN = 4;
const int ECHO_PIN = 5;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
const int RECV_PIN = 1;
IRrecv irrecv(RECV_PIN);
decode_results results;
int menu=0;
int hasil=0;
int sensor=7;
int sensor_value;
unsigned long pressStartTime;
char ulang;
bool button1Pressed = false;
bool button2Pressed = false;
bool statusmenu1=false;
bool statusmenu2=false;
bool statusmenu3=false;
bool statusmenu4=false;
bool statusmenu5=false;
bool statusmenu6=false;
bool statusmenu7=false;
bool backTomenu1=false;
void setup() {
// put your setup code here, to run once:
lcd.init ();
Serial.begin(9600);
pinMode(sensor,INPUT);
pinMode(buttonPin1, INPUT_PULLUP);
pinMode(buttonPin2, INPUT_PULLUP);
irrecv.enableIRIn();
irrecv.blink13(true);
lcd.setCursor (0,0);
lcd.print ("KOMPOR UPI!!");
lcd.setCursor (0,1);
lcd.print ("Shevila CAK.002.23.16");
lcd.setCursor(0, 0);
for (int i=0; i<21; i++){
lcd.scrollDisplayLeft();
delay (300);
}
}
void loop() {
// put your main code here, to run repeatedly:
// Serial.println(digitalRead(buttonPin));
if (digitalRead(buttonPin1)==0){
menu++;
lcd.println(menu);
delay(300);
}
if (digitalRead(buttonPin2)==0){
hasil++;
lcd.println(hasil);
button2Pressed = !button2Pressed;
delay(300);
}
switch (menu) {
case 1:
if(statusmenu1==false){
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("Menu :");
Serial.println("Menu :");
statusmenu1=true;
}
else {
lcd.setCursor (7,0);
lcd.println(" ");
}
break;
case 2:
if(statusmenu2==false){
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("> LDR");
Serial.println("LDR");
statusmenu2=true;
// Perform action for Option 1
}
if (button2Pressed==true){
int sensorValue = analogRead(A0);
//mencetak nilai yang terbaca pada serial monitor
lcd.setCursor (12,0);
lcd.println(sensorValue);
}
else {
lcd.setCursor (12,0);
lcd.println(" ");
}
break;
case 3:
if(statusmenu3==false){
lcd.clear();
lcd.setCursor (0,1);
lcd.print ("> HCSR04");
Serial.println("HCSR04");
statusmenu3=true;
// Perform action for Option 2
}
if (button2Pressed==true){
// Baca jarak menggunakan sensor ultrasonic
lcd.print(sonar.ping_cm());
// Tampilkan jarak di LCD
lcd.setCursor(13, 1);
}
else {
lcd.setCursor (12, 1);
lcd.println(" ");
}
break;
case 4:
if(statusmenu4==false){
lcd.clear();
lcd.setCursor (0,0);
lcd.print ("> PIR");
Serial.println("PIR");
statusmenu4=true;
// Perform action for Option 3
delay(50);
}
if (button2Pressed==true){
// membaca nilai dari pin 7
int sensorValue = digitalRead(sensor);
lcd.setCursor (14,0);
lcd.println(sensor_value);
}
else {
lcd.setCursor (14,0);
lcd.println(" ");
}
break;
case 5:
if(statusmenu5==false){
lcd.clear();
lcd.setCursor (0,1);
lcd.print ("> IR");
Serial.println("INFRARED");
statusmenu5=true;
}
// Perform action for Option 4
if(button2Pressed==true){
(irrecv.decode(&results));
lcd.setCursor (8,1);
lcd.println(results.value, HEX);
irrecv.resume();
}
else {
lcd.setCursor (8,1);
lcd.println(" ");
}
break;
case 6:
if(statusmenu6==false){
lcd.clear();
lcd.setCursor (0,0);
lcd.println("> Kembali");
statusmenu6=true;
}
if(button2Pressed==true){
lcd.setCursor (11,0);
lcd.println(" ");
menu = 1; // Kembali ke menu awal
hasil = 1; // Reset hasil
statusmenu1 = false;
statusmenu2 = false;
statusmenu3 = false;
statusmenu4 = false;
statusmenu5 = false;
statusmenu6 = false;
statusmenu7 = false;
lcd.clear();
}
else {
lcd.setCursor (11,0);
lcd.println(" ");
}
break;
case 7:
if(statusmenu7==false){
lcd.clear();
lcd.setCursor (0,1);
lcd.print ("> End ");
statusmenu7=true;
}
if(button2Pressed==true){
lcd.setCursor (0,0);
lcd.print ("KOMPOR UPI=============");
lcd.setCursor (0,1);
lcd.print ("Kreatif,Produktif,Inovatif");
lcd.scrollDisplayLeft();
}
break;
default:
Serial.println("Invalid choice. Please try again.");
break;
}
delay(10);
}