#include <LCD_I2C.h>
LCD_I2C lcd(0x27, 16, 2);
#define SW0 5
#define SW1 4
#define SW2 3
#define SW3 2
#define BUZZ 10
#define LED1 9
#define LED2 8
#define LED3 7
int menu;
void setup() {
lcd.begin();
lcd.backlight();
pinMode(SW0, INPUT_PULLUP);
pinMode(SW1, INPUT_PULLUP);
pinMode(SW2, INPUT_PULLUP);
pinMode(SW3, INPUT_PULLUP);
pinMode(BUZZ, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
}
void loop() {
menu_0();
menu_utama1();
menu_utama2();
menu_utama3();
menu_utama4();
submenu_utama10();
submenu_utama11();
submenu_utama20();
submenu_utama30();
submenu_utama33();
submenu_utama40();
submenu_utama44();
subsub_menu100_1000();
subsub_menu111_1111();
subsub_menu200();
subsub_menu300();
subsub_menu333();
subsub_menu400();
subsub_menu444();
}
//VOID UNTUK MENU 0
void menu_0() {
if (menu == 0) {
lcd.setCursor(2, 0);
lcd.print("TEKAN TOMBOL");
if (digitalRead(SW1) == 0 || digitalRead(SW2) == 0) {
while ( digitalRead(SW1) == 0 || digitalRead(SW2) == 0) {}
lcd.clear();
BUNYI();
menu = 1;
}
}
}
//VOID UNTUK MENU UTAMA
void menu_utama1() {
if (menu == 1) {
lcd.setCursor(0, 0);
lcd.print(">LED | LED ALL");
lcd.setCursor(0, 1);
lcd.print(" ADC | ADC MAP");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 10;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 2;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 0;
lcd.clear();
}
}
}
void menu_utama2() {
if (menu == 2) {
lcd.setCursor(0, 0);
lcd.print(" LED |>LED ALL");
lcd.setCursor(0, 1);
lcd.print(" ADC | ADC MAP");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 20;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 3;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 1;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 0;
lcd.clear();
}
}
}
void menu_utama3() {
if (menu == 3) {
lcd.setCursor(0, 0);
lcd.print(" LED | LED ALL");
lcd.setCursor(0, 1);
lcd.print(">ADC | ADC MAP");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 30;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 4;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 2;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 0;
lcd.clear();
}
}
}
void menu_utama4() {
if (menu == 4) {
lcd.setCursor(0, 0);
lcd.print(" LED | LED ALL");
lcd.setCursor(0, 1);
lcd.print(" ADC |>ADC MAP");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 40;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 3;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 0;
lcd.clear();
}
}
}
// VOID SUB MENU UTAMA 10,11,20,30,33,40,44
void submenu_utama10(){
if(menu == 10){
lcd.setCursor(0, 0);
lcd.print(">LED 1");
lcd.setCursor(0, 1);
lcd.print(" LED 2");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 100;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 11;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 1;
lcd.clear();
}
}
}
void submenu_utama11(){
if(menu==11){
lcd.setCursor(0, 0);
lcd.print(" LED 1");
lcd.setCursor(0, 1);
lcd.print(">LED 2");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 111;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 10;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 1;
lcd.clear();
}
}
}
void submenu_utama20(){
if(menu==20){
lcd.setCursor(1, 0);
lcd.print("KONDISI ALL LED");
lcd.setCursor(5, 1);
lcd.print("<OFF>");
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 200;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 2;
lcd.clear();
}
}
}
void submenu_utama30(){
if(menu==30){
lcd.setCursor(0, 0);
lcd.print(">ADC A0");
lcd.setCursor(0, 1);
lcd.print(" ADC A1");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 300;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 33;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 3;
lcd.clear();
}
}
}
void submenu_utama33(){
if(menu==33){
lcd.setCursor(0, 0);
lcd.print(" ADC A0");
lcd.setCursor(0, 1);
lcd.print(">ADC A1");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 333;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 30;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 3;
lcd.clear();
}
}
}
void submenu_utama40(){
if(menu==40){
lcd.setCursor(0, 0);
lcd.print(">MAP ADC A0");
lcd.setCursor(0, 1);
lcd.print(" MAP ADC A1");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 400;
lcd.clear();
}
if (digitalRead(SW1) == 0) {
while (digitalRead(SW1) == 0) {}
BUNYI();
menu = 44;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 4;
lcd.clear();
}
}
}
void submenu_utama44(){
if(menu==44){
lcd.setCursor(0, 0);
lcd.print(" MAP ADC A0");
lcd.setCursor(0, 1);
lcd.print(">MAP ADC A1");
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 444;
lcd.clear();
}
if (digitalRead(SW2) == 0) {
while (digitalRead(SW2) == 0) {}
BUNYI();
menu = 40;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 4;
lcd.clear();
}
}
}
//VOID SUB SUB MENU 100,1000,111,1111,200,300,333,400,444
void subsub_menu100_1000(){
if(menu==100){
lcd.setCursor(0, 0);
lcd.print(" KONDISI LED 1");
lcd.setCursor(5, 1);
lcd.print("<OFF>");
digitalWrite(LED1, LOW);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 1000;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 10;
lcd.clear();
}
}
if(menu==1000){
lcd.setCursor(0, 0);
lcd.print(" KONDISI LED 1");
lcd.setCursor(5, 1);
lcd.print("<ON>");
digitalWrite(LED1, HIGH);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 100;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 10;
lcd.clear();
}
}
}
void subsub_menu111_1111(){
if(menu==111){
lcd.setCursor(0, 0);
lcd.print(" KONDISI LED 2");
lcd.setCursor(5, 1);
lcd.print("<OFF>");
digitalWrite(LED2, LOW);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 1111;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 11;
lcd.clear();
}
}
if(menu==1111){
lcd.setCursor(0, 0);
lcd.print(" KONDISI LED 2");
lcd.setCursor(5, 1);
lcd.print("<ON>");
digitalWrite(LED2, HIGH);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 111;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 11;
lcd.clear();
}
}
}
void subsub_menu200(){
if(menu==200){
lcd.setCursor(1, 0);
lcd.print("KONDISI ALL LED");
lcd.setCursor(5, 1);
lcd.print("< ON >");
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
if (digitalRead(SW0) == 0) {
while (digitalRead(SW0) == 0) {}
BUNYI();
menu = 20;
lcd.clear();
}
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 2;
lcd.clear();
}
}
}
void subsub_menu300(){
if(menu==300){
lcd.setCursor(2, 0);
lcd.print("Nilai ADC-A0");
lcd.setCursor(6, 1);
lcd.print(analogRead(A0));
lcd.print(" ");
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 30;
lcd.clear();
}
}
}
void subsub_menu333(){
if(menu==333){
lcd.setCursor(2, 0);
lcd.print("Nilai ADC-A1");
lcd.setCursor(6, 1);
lcd.print(analogRead(A1));
lcd.print(" ");
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 33;
lcd.clear();
}
}
}
void subsub_menu400(){
int yy0 = map(analogRead(A0), 0, 1023, 0, 10);
if(menu==400){
lcd.setCursor(0, 0);
lcd.print("MAP ADC-A0");
lcd.setCursor(0, 1);
lcd.print(analogRead(A0));
lcd.print(" = ");
lcd.print(yy0);
lcd.print(" ");
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 40;
lcd.clear();
}
}
}
void subsub_menu444(){
int yy1 = map(analogRead(A1), 0, 1023, 0, 100);
if(menu==444){
lcd.setCursor(0, 0);
lcd.print("MAP ADC-A1");
lcd.setCursor(0, 1);
lcd.print(analogRead(A1));
lcd.print(" = ");
lcd.print(yy1);
lcd.print(" ");
if (digitalRead(SW3) == 0) {
while (digitalRead(SW3) == 0) {}
BUNYI();
menu = 44;
lcd.clear();
}
}
}
void BUNYI() {
tone(BUZZ, 1000);
delay(100);
noTone(BUZZ);
}