LA 1 M1





LA 1
== Percobaan 4 ==
KEYPAD & LCD


  1. Siapkan alat dan bahan yang akan digunakan pada saat praktikum seperti Arduino Uno, Keypad, LCD
  2. Rangkai sesuai gambar percobaan
  3. Rancang kerja rangkaian menggunakan flowchart
  4. Running rangkaian simulasi sesuai dengan kondisi pada saat praktikum



Arduino Uno

LCD

Keypad











#include <Keypad.h> 
#include <LiquidCrystal.h> 
(input library) 

// Penjelasan Keypad yang dimana 3x4 ( 3 kolom 4 baris)
const byte ROWS = 4; 
const byte COLS = 3; 

// Penjelasan dari deklarasi Pin LCD
const int rs = A0, en = A1, d4 = A2, d5 = A3, d6 = A4, d7 = A5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7); 

// Array representing the keypad 
char hexaKeys[ROWS][COLS] = { 
  {'1', '2', '3'}, 
  {'4', '5', '6'}, 
  {'7', '8', '9'}, 
  {'*', '0', '#'} 
}; 

// Arduino connections 
byte rowPins[ROWS] = {9, 8, 7, 6}; 
byte colPins[COLS] = {5, 4, 3}; 

// Explanation of LED pins
const int ledPins[] = {10, 11, 12, 13}; // Assuming LEDs are connected to digital pins 10 to 13

// Objek keypad sesuai dengan keypad yang dipakai
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); 
  
void setup() { 
  // Inisialisasi serial monitor
  Serial.begin(9600); 
  lcd.begin(16, 2); 
  
  // Pin LED sebagai output
  for (int i = 0; i < 4; ++i) {
    pinMode(ledPins[i], OUTPUT);
  }

void loop() { 
  // Get the key value if pressed 
  char customKey = customKeypad.getKey(); 
  if (customKey) { 
    // Display the key value on the LCD
    lcd.clear();
    lcd.setCursor(0, 0); 
    lcd.print("Tombol: "); 
    lcd.print(customKey); 
    
    // Kombinasi yang dipakai sesuai keinginan masing masing
    switch (customKey) {
      case '1':
        activateLEDs(1, 0, 0, 0); // Turn on LED 1
        break;
      case '2':
        activateLEDs(0, 1, 0, 0); // Turn on LED 2
        break;
      case '3':
        activateLEDs(0, 0, 1, 0); // Turn on LED 3
        break;
      case '4':
        activateLEDs(0, 0, 0, 1); // Turn on LED 4
        break;
      case '5':
        activateLEDs(1, 1, 0, 0); // Turn on LEDs 1 and 2
        break;
      case '6':
        activateLEDs(1, 0, 1, 0); // Turn on LEDs 1 and 3
        break;
      case '7':
        activateLEDs(1, 0, 0, 1); // Turn on LEDs 1, and 4
        break;
      case '8':
        activateLEDs(0, 1, 0, 1); // Turn on LED 2 and 4
        break;
      case '9':
        activateLEDs(0, 0, 1, 1); // Turn on LEDs 3 and 4
        break;
      case '0':
        activateLEDs(1, 1, 1, 1); // Turn on all LEDs
        break;
      case '*':
        activateLEDs(1, 1, 1, 0); // Turn on LEDs 2, 3, and 4
        break;
      case '#':
        activateLEDs(0, 1, 1, 1); // Turn on LEDs 1 and 2 and 3
        break;
      default:
        // Turn off all LEDs if an invalid key is pressed
        activateLEDs(0, 0, 0, 0);
        break;
    }
  } 
}

// Fungsi untuk mengaktifkan LED sesuai kombinasi di atas
void activateLEDs(int led1, int led2, int led3, int led4) {
  digitalWrite(ledPins[0], led1);
  digitalWrite(ledPins[1], led2);
  digitalWrite(ledPins[2], led3);
  digitalWrite(ledPins[3], led4);
}



Setiap tombol keypad (input) menghasilkan keterangan pada LCD (output)




Percobaan 4
1. Analisa kenapa data pin yang kita gunakan hanya dari D4- D7? 
Jawab:
     Pada LCD, pin D4-D7 terhubung ke output Arduino untuk mentransmisikan data. Ketika pin D4-D7 yang dihubungkan ke output Arduino, maka data yang dihasilkan itu 4 bit data saja. Apabila menggunakan pin D0-D4 maka data yang dihasilkan itu 8 bit data. Umumnya pada LCD Hitachi, penggunaan 4 bit sudah mencukupi karena mencakup semua kode ASCII. Meskipun memungkinkan penggunaan 8 bit, proses sekuensial akan terjadi sebanyak 3 kali, kemudian mengompres data 8 bit menjadi 4 bit.

    Meskipun sistem juga dapat mengolah 8 bit. Namun, pada akhirnya, keluaran yang ditampilkan tetap 4 bit. Pengolahan data pada LCD dapat dilakukan baik dengan 8 bit maupun 4 bit, tetapi keluarannya tetap berupa 4 bit, terkait dengan pengaturan pin RS dan RW. Kesimpulannya, baik 8 bit maupun 4 bit data dapat diterima oleh sistem LCD.

2. Analisa bagaimana cara kerja dari keypad sehingga bisa menampilkan hasil pada LCD, jelaskan kenapa!
Jawab:
    Keypad membaca input yang diterima. Input terdiri dari baris (R1-R4) dan kolom (C1-C4). Setelah itu, Arduino akan melakukan pemindaian matriks untuk menentukan tombol mana yang sedang ditekan. Setelah menemukan lokasi tombol yang ditekan, maka Arduino akan bekerja dan memetakan lokasinya. 

Contoh: Jika tombol berada di baris ke-1 dan kolom ke-3, hasil pemetaannya adalah "2".

    Hasil pemetaan tersebut kemudian ditampilkan menggunakan LCD. LCD disini bekerja sebagai output dan Keypad sebagai input. LCD dan Arduino bekerja dengan menghubungkan pin RS LCD ke pin A0 Arduino untuk pengiriman data. Lalu untuk pin D4-D7 pada LCD itu terhubung dengan output Arduino. Selanjutnya, Arduino mengirimkan data pemetaan tersebut, dan hasilnya ditampilkan pada LCD.


Rangkaian Proteus [Download]
Listing Program [Download]
Datasheets Komponen [Download]
Library [Download]
Video Demo [Download]