Cara menggunakan tombol keypad pada LCD shield (How to use keypad on LCD shield)

Berikut saya coba share mengenai bagaimana menggunakan tombol pada Shield LCD.
material yang dibutuhkan:
- LCD shield (pin connection di sini)(skema keypad di sini).
- Arduino UNO
LCD shield
UNO
Hubungkan shield dengan UNO dengan cara di tumpuk.

Keypad untuk shield ini termasuk unik.
Karena hanya dengan menggunakan 1 buah pin input Analog, namun bisa sampai 5 tombol bahkan lebih.
Fungsi utamanya adalah sebagai pembagi tegangan fix / potensiometer permanen.
Rangkaian tombol keypad bisa di lihat disini.

Ketik sketch keypad seperti dibawah:

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // select the pins used on the LCD panel

// define some values used by the panel and buttons
int lcd_key = 0;
int adc_key_in = 0;

#define btnRIGHT    0
#define btnUP          1
#define btnDOWN   2
#define btnLEFT       3
#define btnSELECT  4
#define btnNONE     5

int read_LCD_buttons()
{                                                                // Membaca tombol
adc_key_in = analogRead(0);                     //  Membaca data dari pin analog.
                                                                  // Nilai tombol yang tertera adalah: 0, 144, 329, 504, 741
                                                                  // Tambahkan sekitar 50 kedalam nilai pembatasan maka selesai.
                                                                  // Penentuan nilai tombol dan nama tombol seperti dibawah
if (adc_key_in < 50) return btnRIGHT;
if (adc_key_in < 195) return btnUP;
if (adc_key_in < 380) return btnDOWN;
if (adc_key_in < 555) return btnLEFT;
if (adc_key_in < 790) return btnSELECT;
return btnNONE;                                        // when all others fail, return this.
}

void setup()
{
  lcd.begin(16, 2);                     // start the library
  lcd.setCursor(0,0);                 // set the LCD cursor position
  lcd.print("Push the buttons");   // print a simple message on the LCD
}

void loop()
{
  lcd.setCursor(9,1);           // move cursor to second line “1” and 9 spaces over
  lcd.print(millis()/1000);     // display seconds elapsed since power-up

  lcd.setCursor(0,1);           // move to the begining of the second line
  lcd_key = read_LCD_buttons(); // read the buttons

  switch (lcd_key)
  {                              // depending on which button was pushed, we perform an action
    case btnRIGHT:
    {                            // push button “RIGHT” and show the word on the screen
    lcd.print("RIGHT ");
    break;
    }
    case btnLEFT:{
    lcd.print("LEFT  ");           // push button “LEFT” and show the word on the screen
    break;
    }
    case btnUP:
    {
    lcd.print("UP    ");         // push button “UP” and show the word on the screen
    break;
    }
    case btnDOWN:{
    lcd.print("DOWN  ");           // push button “DOWN” and show the word on the screen
    break;
    }
    case btnSELECT:{
    lcd.print("SELECT"); // push button “SELECT” and show the word on the screen
    break;
    }
    case btnNONE:{
    lcd.print("      "); // No action will show “None” on the screen
    break;
    }
  }
}

Atau filenya ino nya bisa di download di sini.
Metode yang digunakan adalah pemilihan nilai tegangan analog.
untuk programnya sendiri, lebih kompatibel menggunakan switch case.

Keuntungan menggunakan metode ini adalah kita dapat membuat tombol sebanyak yang kita mau hanya dengan menggunakan 1 pin input analog.
Dikarenakan nilai analog sendiri sampai 255. jadi setidaknya bisa sampai 100 tombol bisa kita buat.
Nilai pembagi tegangannya sendiri bisa kita atur sesuai keinginan kita sendiri.
Jadi lebih flexibel dan simple.

Kita akan coba buat pilihan menu dengan menggunakan shield ini di postingan berikutnya.

Selamat belajar.

Comments

Post a Comment

Popular posts from this blog

Membuat lampu otomatis menggunakan arduino dan RTC (Untuk 2 lampu)

Cara membuat gelombang sinus dengan PWM arduino (Make a sine wave with PWM arduino)