LCD atau Liquid Crystal Display dapat digunakan untuk menampilkan tampilkan yang kita inginkan, selain itu kita juga dapat membuat menu untuk mangatur suatu alat. Kali ini kita akan membuat menu sederhana dengan kendali rotary encoder.
[lwptoc numeration=”none” title=”Daftar Isi”] |
[membership level=”0,1,2,4″]
Membuat Menu Sederhana dengan Rotary Encoder + LCD
1. Alat / Bahan
- Arduino IDE Download
- Library: LiquidCrystal_I2C Download
- Arduino UNO 1 Buah
- LCD 1 Buah
- I2C 1 Buah
- Rotary Encoder 1 Buah
- LED 2 Buah
- Resistor 220 ohm 2 Buah
- Project Board 1 Buah
- Kabel Jumper Secukupnya
Untuk mendapatkan komponen elektronik di atas silahkan temukan disini.
Baca Juga Cara Membaca Input dari Rotary Encoder
2. Skema Rangkaian
Gambar Rangkaian Membuat Menu Sederhana dengan Rotary Encoder + LCD
Keterangan:
- 5V – VCC I2C, VCC Rotary Encoder
- GND – GND I2C, GND Rotary Encoder
- D8 – SW
- D7 –DT
- D6 –CLK
- D8 – Kaki resistor 1
- D9 – Kaki resistor 2
- Kaki resistor 1 – Anoda LED 1
- Kaki resistor 2 – Anoda LED 2
[/membership]
3. Langkah Kerja
- Pertama Siapkan alat dan bahan yang akan di gunakan
- Kedua Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian di atas
- Ketiga Buka software Arduino IDE yang telah terinstal pada laptop/komputer
- Kemudian Unduh semua library di atas dan masukkan libray tersebut dengan cara buka Arduino IDE pilih Sketch->Include Library->Add.Zip Library
- Setelah itu Ketikkan sketch program pada halaman Arduino IDE
- Selanjutnya Masukan alamat I2C LCD pada sketch program, untuk mengetahui alamat I2C pelajari materi berikut:
Mencari Tahu Alamat I2C Pada Modul I2C - Kemudian Untuk memahami cara kerja program Rotari Encoder pelajari materi berikut:
Membaca Input Dari Rotary Encoder - Setelah itu Untuk memahami dasar pembuatan menu pelajari materi berikut:
Membuat Tampilan Menu Pada LCD Dengan Push Button - Segera Lakukan proses uploading program
Belajar Elektronika, Arduino, dan IoT step by step dengan bantuan tangga belajar? Segera Daftar sekarang dan dapatkan PROMO
4. Sketch Program
/* Program Membuat Menu Sederhana dengan Rotary Encoder + LCD di buat oleh Indobot */ #include <LiquidCrystal_I2C.h> //Library LCD I2C LiquidCrystal_I2C lcd(0x27,16,2); //Alamat I2C #define outputA 6 //CLK pada pin D6 #define outputB 7 //DT pada pin D7 #define button 8 //SW pada pin D8 #define led1 9 //LED 1 pada pin D9 #define led2 10 bool LED1 = false; //Variabel kondisi LED 1 bool LED2 = false; int counter = 0; //Variabel penghitung nilai int aState; //Variabel kondisi int aLastState; //Variabel kondisi terakhir void setup() { lcd.init (); //Mulai LCD lcd.setBacklight(HIGH); //Nyalakan backlight pinMode (outputA,INPUT_PULLUP); //Setting sebagai input pullup pinMode (outputB,INPUT_PULLUP); pinMode (button,INPUT_PULLUP); pinMode(led1, OUTPUT); //Setting LED sebagai output pinMode(led2, OUTPUT); Serial.begin (9600); //Mulai komunikasi serial aLastState = digitalRead(outputA); //---------------Tampilan Awal---------------// lcd.setCursor(1,0); lcd.print("LED 1 = OFF"); lcd.setCursor(1,1); lcd.print("LED 2 = OFF"); } void loop() { //---------------Kondisi 1---------------// set1: baca_rotary(); //Prosedur baca rotary lcd.setCursor(0,0); lcd.print(">"); lcd.setCursor(0,1); lcd.print(" "); if(counter == 2 || counter == -2){ //Jika kondisi berubah, maka counter = 0; goto set2; //Lompat ke kondisi 2 } else if(digitalRead(button) == LOW){ //Jika tombol ditekan, maka delay(200); cek_led1(); //Jalankan prosedur cek LED goto set1; } else{goto set1;} //---------------Kondisi 2---------------// set2: baca_rotary(); lcd.setCursor(0,0); lcd.print(" "); lcd.setCursor(0,1); lcd.print(">"); if(counter == 2 || counter == -2){ counter = 0; goto set1; } else if(digitalRead(button) == LOW){ delay(200); cek_led2(); goto set2; } else{goto set2;} } void baca_rotary(){ //Prosedur baca rotary aState = digitalRead(outputA); if (aState != aLastState){ if (digitalRead(outputB) != aState) { counter++; } else { counter--; } } aLastState = aState; } void cek_led1(){ //Prosedur cek LED 1 if(LED1 == false){ //Jika LED mati, maka digitalWrite(led1, HIGH); //Menyalakan LED lcd.setCursor(9,0); lcd.print("ON "); LED1 = true; } else{ //Jika LED hidup, maka digitalWrite(led1, LOW); //Mematikan LED lcd.setCursor(9,0); lcd.print("OFF"); LED1 = false; } } void cek_led2(){ if(LED2 == false){ digitalWrite(led2, HIGH); lcd.setCursor(9,1); lcd.print("ON "); LED2 = true; } else{ digitalWrite(led2, LOW); lcd.setCursor(9,1); lcd.print("OFF"); LED2 = false; } }
Kesimpulannya:
Kesimpulannya Program bekerja dengan menampilkan display pada layar lcd. Display yang tertampil pada lcd sesuai dengan program yaitu “LED 1 = OFF” dan “LED 2 = OFF”. Kemudian kita coba untuk meyalakan lampu led, putar rotary encoder untuk memilih lampu mana yang akan di nyalakan, jika sudah kemudian tekan rotary encoder untuk menayalakan lampu.
[/membership]
Mau belajar elektronika dasar? Arduino? atau Internet of Things? Segera Ikuti kursus online Indobot Academy!