dimulai dengan menghubungkan mikrokontroler Arduino ke keypad dan layar LCD sesuai dengan modul Praktikum yang tersedia. Setelah itu, kode yang telah disiapkan akan diunggah ke dalam mikrokontroler Arduino Uno. Tahap awal akan memulai inisialisasi, di mana pin yang terhubung ke keypad dan layar LCD akan dikonfigurasi, dan mungkin juga komunikasi serial akan dimulai. Setelah tahap inisialisasi selesai, mikrokontroler akan memulai pemantauan input dari keypad secara kontinu. Setiap kali tombol pada keypad ditekan, mikrokontroler akan mendeteksi sinyal yang masuk dari pin yang terhubung ke keypad. Nilai dari tombol yang ditekan akan diekstraksi, dan kemudian nilai tersebut akan ditampilkan di layar LCD. Proses ini akan berulang terus-menerus, sehingga setiap kali pengguna berinteraksi dengan keypad, respons yang sesuai akan ditampilkan di layar LCD. Keypad menggunakan prinsip scanning, di mana setiap tombol pada keypad dipindai baik dalam baris maupun kolom. Ketika tombol ditekan, mikrokontroler akan mengenali posisi tombol berdasarkan baris dan kolom yang dipindai terlebih dahulu. Dengan cara ini, angka yang muncul di layar LCD akan sesuai dengan posisi tombol yang ditekan. Jika tombol ditekan secara bersamaan, data atau angka yang muncul akan bergantung pada baris dan kolom yang dipindai terlebih dahulu oleh mikrokontroler.
Pada percobaan ini terdapat 8 buah button sebagai input dan 8 buah LED sebagai output yang mewakili setiap button tersebut. Pada mulanya LED dalam kondisi mati karena tidak ada button yang ditekan. Namun, ketika salah satu button ditekan, maka button tersebut akan memberikan sinyal kepada Arduino, lalu Arduino akan meneruskan sinyal tersebut ke LED.
Pada rangkaian simulasi LED disini bersifat forward bias, sehingga ketika sinyal keluaran bernilai 1 LED akan hidup. Berikut program ketika LED bersifat forward bias :
cpp
Copy code
// Matikan semua LED terlebih dahulu
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], LOW);
}
// Hidupkan LED sesuai dengan tombol yang ditekan
if (b8 == HIGH) digitalWrite(led[7], HIGH);
if (b7 == HIGH) digitalWrite(led[6], HIGH);
if (b6 == HIGH) digitalWrite(led[5], HIGH);
if (b5 == HIGH) digitalWrite(led[4], HIGH);
if (b4 == HIGH) digitalWrite(led[3], HIGH);
if (b3 == HIGH) digitalWrite(led[2], HIGH);
if (b2 == HIGH) digitalWrite(led[1], HIGH);
if (b1 == HIGH) digitalWrite(led[0], HIGH);
Sedangkan pada rangkaian percobaan di praktikum, LED bersifat reverse bias. Sehingga, ketika sinyal keluaran bernilai 0 LED akan menyala. Berikut adalah program ketika LED bersifat forward bias :
cpp
Copy code
// Matikan semua LED terlebih dahulu
for (int i = 0; i < 8; i++) {
digitalWrite(led[i], HIGH);
}
// Hidupkan LED sesuai dengan tombol yang ditekan
if (b8 == HIGH) digitalWrite(led[7], LOW);
if (b7 == HIGH) digitalWrite(led[6], LOW);
if (b6 == HIGH) digitalWrite(led[5], LOW);
if (b5 == HIGH) digitalWrite(led[4], LOW);
if (b4 == HIGH) digitalWrite(led[3], LOW);
if (b3 == HIGH) digitalWrite(led[2], LOW);
if (b2 == HIGH) digitalWrite(led[1], LOW);
if (b1 == HIGH) digitalWrite(led[0], LOW);
// Include the Keypad library
#include <Keypad.h>
#include <LiquidCrystal.h>
// Constants for row and column sizes
const byte ROWS = 4;
const byte COLS = 4;
LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);
// Array to represent keys on keypad
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3',
'A'},
{'4', '5', '6',
'B'},
{'7', '8', '9',
'C'},
{'*', '0', '#', 'D'}
};
// Connections to Arduino
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2};
// Create keypad object
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins,
colPins, ROWS, COLS);
void setup() {
// Setup serial
monitor
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop() {
// Get key value if pressed
char customKey = customKeypad.getKey();
if (customKey) {
// Print key value to serial monitor
lcd.setCursor(0, 0);
lcd.print("Tombol :");
lcd.print(customKey);
}
}
5. Kondisi
[Kembali]