Membuat Menu Sederhana dengan Rotary Encoder + LCD

 Membuat Menu Sederhana dengan Rotary Encoder + LCD

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.

1. Alat / Bahan
  • Arduino IDE                                     Download disini
  • Library: LiquidCrystal_I2C               Download disini
  • 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.

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

3. Langkah Kerja
  1. Siapkan alat dan bahan yang akan digunakan
  2. Lakukan proses wiring dengan menggunakan Gambar skematik rangkaian diatas
  3. Buka software Arduino IDE yang telah terinstal pada laptop/komputer
  4. Unduh semua library di atas dan masukkan libray tersebut dengan cara buka Arduino IDE pilih Sketch->Include Library->Add.Zip Library 
  5. Ketikkan sketch program pada halaman Arduino IDE
  6. Masukan alamat I2C LCD pada sketch program, untuk mengetahui alamat I2C pelajari materi berikut:
    Mencari Tahu Alamat I2C Pada Modul I2C
  7. Untuk memahami cara kerja program Rotari Encoder pelajari materi berikut:
    Membaca Input Dari Rotary Encoder
  8. Untuk memahami dasar pembuatan menu pelajari materi berikut:
    Membuat Tampilan Menu Pada LCD Dengan Push Button
  9. Lakukan proses uploading program
4. Sketch Program

/* Program Membuat Menu Sederhana dengan Rotary Encoder + LCD dibuat 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;
  }
}

Kesimpulan:

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.

Subscribe to receive free email updates:

0 Response to "Membuat Menu Sederhana dengan Rotary Encoder + LCD"

Post a Comment