Antarmuka Menu dan submenu pada LCD dan Tombol menggunakan Arduino
baca juga : 10 Project Arduino paling populer
Bahan yang dibutuhkan :
1. Arduino UNO
2. LCD 2004
3. Tombol Push Button
4. Laptop atau PC
Skema rangkaian dpat dilihat pada gambar berikut :
Skema rangkaian |
Tombol tersebut terdiri dari tombol menu, up, down, dan OK. Fungsi masing-masing tombol tersebut adalah :
- Menu : Tombol untuk masuk ke menu dari halaman utama
- UP : Tombol untuk menaikkan kursor
- Down : Tombol untuk Menurunkan kursor
- OK : Tombol untuk memilih menu
Rangkaian diatas menggunakan LCD 2004 dengan modul I2C dan Arduino UNO, untuk mengubah konfigurasi tinggal disesuaikan pada program. Listing program dapat dilihat dibawah :
////////////////////////andalanelektro.id////////////////////////////////////////
#include <LiquidCrystal.h>
const int rs = 12,rw = 1, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
int Menu,Up,Down,Ok;
int lockMenu=0,lockUp=0,lockDown=0,lockOk=0;
int dis,sub=0,mode=0;
LiquidCrystal lcd(rs, rw, en, d4, d5, d6, d7);
void setup()
{
pinMode(A0, INPUT_PULLUP);// mengaktifkan resistor internal
pinMode(A1, INPUT_PULLUP);
pinMode(A2, INPUT_PULLUP);
pinMode(A3, INPUT_PULLUP);
lcd.begin(20, 4);
lcd.setCursor(0,0); lcd.print(" Tutorial Menu ");
lcd.setCursor(0,1); lcd.print(" & ");
lcd.setCursor(0,2); lcd.print(" Sub Menu ");
lcd.setCursor(0,3); lcd.print(" andalanelektro.id ");
}
void loop()
{
Menu= digitalRead(A0);
Up= digitalRead(A1);
Down= digitalRead(A2);
Ok= digitalRead(A3);
tampil();
}
void tampil()
{
if (Menu==0 && lockMenu==0){lockMenu=1;} if (Menu!=0 && lockMenu==1){lockMenu=0; dis=1;}
if (Menu==0 && lockMenu==0){lockMenu=1;} if (Menu!=0 && lockMenu==1 && dis>1){lcd.clear(); lockMenu=0; dis=1;}
if (dis==1)
{
// tampilan awal//
lcd.setCursor(1,0); lcd.print("Menu 1 ");
lcd.setCursor(1,1); lcd.print("Menu 2 ");
lcd.setCursor(1,2); lcd.print("Menu 3 ");
lcd.setCursor(1,3); lcd.print("Menu 4 ");
if (Down==0 && lockDown==0){lockDown=1;} //turunkan Cursor ">"
if (Down!=0 && lockDown==1){lcd.clear(); lockDown=0; mode++;}
if (Up==0 && lockUp==0){lockUp=1;} //naikkan Cursor ">"
if (Up!=0 && lockUp==1){lcd.clear(); lockUp=0; mode--;}
switch (mode)
{
case 0 : lcd.setCursor(0,0); lcd.print(">"); break;
case 1 : lcd.setCursor(0,1); lcd.print(">"); break;
case 2 : lcd.setCursor(0,2); lcd.print(">"); break;
case 3 : lcd.setCursor(0,3); lcd.print(">"); break;
}
if (Ok==0 && lockOk==0){lockOk=1; mode=0;}
if (Ok!=0 && lockOk==1 && mode==0){lockOk=0; dis=2; lcd.clear(); } // pilih menu 1
if (Ok!=0 && lockOk==1 && mode==1){lockOk=0; dis=3; lcd.clear(); } // pilih menu 2
if (Ok!=0 && lockOk==1 && mode==2){lockOk=0; dis=4; lcd.clear(); } // pilih menu 3
if (Ok!=0 && lockOk==1 && mode==3){lockOk=0; dis=5; lcd.clear(); } // pilih menu 4
if (mode>3 || mode<0) mode=0;
}
if (dis==2)
{
if (sub==0)
{
lcd.setCursor(0,0); lcd.print("Menu 1 ");
lcd.setCursor(1,1); lcd.print("Sub Menu 1 ");
lcd.setCursor(1,2); lcd.print("Sub Menu 2 ");
lcd.setCursor(1,3); lcd.print("Sub Menu 3 ");
if (Down==0 && lockDown==0){lockDown=1;} //turunkan Cursor ">"
if (Down!=0 && lockDown==1){lcd.clear(); lockDown=0; mode++;}
if (Up==0 && lockUp==0){lockUp=1;} //naikkan Cursor ">"
if (Up!=0 && lockUp==1){lcd.clear(); lockUp=0; mode--;}
if (Ok==0 && lockOk==0){lockOk=1; mode=0;}
if (Ok!=0 && lockOk==1 && mode==0){lockOk=0; lcd.clear(); sub=1; } // Isi submenu 1
if (Ok!=0 && lockOk==1 && mode==1){lockOk=0; lcd.clear(); sub=2; } // Isi submenu 2
if (Ok!=0 && lockOk==1 && mode==2){lockOk=0; lcd.clear(); sub=3; } // Isi submenu 3
if (mode>2 || mode<0) mode=0;
{
case 0 : lcd.setCursor(0,1); lcd.print(">"); break;
case 1 : lcd.setCursor(0,2); lcd.print(">"); break;
case 2 : lcd.setCursor(0,3); lcd.print(">"); break;
}
}
}
if (dis==3)
{
lcd.setCursor(0,0); lcd.print("Menu 2 ");
lcd.setCursor(1,1); lcd.print("Sub Menu 1 ");
lcd.setCursor(1,2); lcd.print("Sub Menu 2 ");
lcd.setCursor(1,3); lcd.print("Sub Menu 3 ");
}
if (dis==4)
{
lcd.setCursor(0,0); lcd.print("Menu 3 ");
lcd.setCursor(1,1); lcd.print("Sub Menu 1 ");
lcd.setCursor(1,2); lcd.print("Sub Menu 2 ");
lcd.setCursor(1,3); lcd.print("Sub Menu 3 ");
}
if (dis==5)
{
lcd.setCursor(0,0); lcd.print("Menu 4 ");
lcd.setCursor(1,1); lcd.print("Sub Menu 1 ");
lcd.setCursor(1,2); lcd.print("Sub Menu 2 ");
lcd.setCursor(1,3); lcd.print("Sub Menu 3 ");
}
//isi menu1////
if (dis==2 && sub==1){lcd.setCursor(0,1); lcd.print(" Isi Sub Menu 1:::");}
if (dis==2 && sub==2){lcd.setCursor(0,1); lcd.print(" Isi Sub Menu 2::");}
if (dis==2 && sub==3){lcd.setCursor(0,1); lcd.print(" Isi Sub Menu 3:");}
}
////////////////////////andalanelektro.id////////////////////////////////////////
Setelah berhasil diupload maka tampilan LCD akan seperti ini :
Tampilan awal menu dan sub menu |
Jika tombol Menu ditekan |
Memilih menu satu dengan OK |
Memilih Submenu dengan OK |