Dosen Pengajar:
Nur Sulaiman, S.T.,M.T.
Penyusun:
Dimas Maulana
2231130092
TT 2B
C. DASAR TEORI
1. Keypad
Rangkaian tombol yang berfungsi untuk memberi sinyal pada suatu rangkaian
dengan menghubungkan jalur-jalur tertentu.
Beberapa saklar/tombol, yang terhubung sebagai baris dan kolom, misalnya 3×4
dan 4×4.
Sebagai suatu input pada beberapa peralatan yang berbasis mikroprosessor atau
mikrokontroller.
2. Keypad Matrix
a. Keypad Matrix 4x4
b. Keypad Matrix 3x4
Rangkaian :
E. PROSEDUR PERCOBAAN
1. Buka perangkat lunak Proteus dan buat proyek baru.
2. Tambahkan mikrokontroler pada proteus dan pilih model yang sesuai.
3. Tambahkan display 7 segmen pada proteus.
4. Tambahkan komponen papan tombol (keypad) pada proteus dan sambungkan ke
mikrokontroler. Barisan keypad harus dihubungkan ke pin masukan
mikrokontroler sesuai dengan inputan pada codingan, lalu kolom harus
dihubungkan ke pin keluaran.
5. Tulis program untuk memindai papan tombol dan mendeteksi tombol mana yang
ditekan. Hal ini dapat dilakukan dengan mengatur setiap kolom secara berurutan
untuk menghasilkan output dan membaca baris untuk mendeteksi penekanan
tombol.
6. Setelah penekanan tombol terdeteksi, program akan menampilkan karakter yang
sesuai pada perangkat keluaran yaitu pada tampilan display 7-segmen.
7. Simulasikan program untuk menguji fungsi pada papan tombol(keypad).
F. HASIL PROGRAM
1. Keypad Array
byte Kode7s[] = { 3, 0x9F,0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 1, 9, 0x0FE };
char bufferDisplay = 10;
void setup() {
DDRD = 0b11111111;
PORTB = (PORTB & 0b11000011) | 0b00111100;
DDRB = 0b00111100;
PORTC = (PORTC & 0b11000011) | 0b00111100;
DDRC = 0b00000000;
}
void loop() {
if ((millis() - tDsp0) > 13) {
tDsp0 = millis();
PORTD = Kode7s[bufferDisplay];
}
++iKeyB;
if (iKeyB == 4) { iKeyB = 0; }
}
}
2. Keypad Value
byte Kode7s[] = {3, 0x9F, 0x25, 0x0D, 0x99, 0x49, 0x41, 0x1F, 1, 9, 0x0FE};
char bufferDisplay = 10;
void setup(){
DDRD = 0b11111111;
PORTB = (PORTB & 0b11000011) | 0b00111100;
DDRB = 0b00111100;
PORTC = (PORTC & 0b11000011) | 0b0011100;
DDRC = 0b0000000;
}
void loop(){
if((millis() - tDsp0) > 13) {
tDsp0 = millis();
PORTD = Kode7s[bufferDisplay];
}
G. FLOWCHART
1. Keypad Array
2. Keypad Value
H. ANALISIS
1. Array Keypad
Praktikum bertujuan untuk mengendalikan sebuah keypad serta display tujuh
segmen. Keypad digunakan untuk memasukkan angka dan operasi, sementara
display tujuh segmen menampilkan angka atau operasi yang dimasukkan.
Kode Program:
1. Deklarasi Variabel:
byte Kode7s[]: Array ini berisi kode bit untuk menampilkan digit dari 0
hingga 9 serta beberapa karakter operasi pada display tujuh segmen.
char bufferDisplay: Variabel ini digunakan untuk menyimpan nilai yang
akan ditampilkan pada display.
const byte scanBA, scanBB, scanBC, scanBD: Konstanta yang berisi pola
bit untuk mengendalikan pemindaian keypad.
byte keyScan[]: Array yang berisi pola pemindaian untuk keypad.
iKeyB, iKeyC, keyDetect, keyBuff: Variabel yang digunakan untuk
memantau input dari keypad dan menyimpan karakter yang dimasukkan.
char listKey[4][5]: Array dua dimensi yang berisi karakter-karakter pada
keypad.
long tDsp0, tScan0: Variabel waktu yang digunakan untuk mengatur interval
pembaruan display dan pemindaian keypad.
2. Setup:
Mengatur pin digital sebagai output menggunakan DDRD, DDRB, PORTC,
dan DDRC sesuai kebutuhan untuk mengendalikan display tujuh segmen dan
keypad.
3. Loop:
Setiap 13 milidetik, program memeriksa dan memperbarui display tujuh
segmen dengan mengatur PORTD berdasarkan nilai bufferDisplay.
Setiap 10 milidetik, program memindai keypad:
Mengatur PORTB untuk mengirim pola pemindaian yang sesuai ke
keypad.
Kemudian, program memeriksa input dari keypad dan menentukan
tombol mana yang ditekan, menyimpan karakter yang sesuai dalam
keyBuff.
Jika karakter yang ditekan adalah angka (0-9), maka karakter tersebut
disimpan dalam bufferDisplay.
Jika karakter yang ditekan adalah operasi (seperti /, -, +, atau =), maka
display akan menampilkan operasi tersebut, dan bufferDisplay akan
diatur sesuai dengan operasi tersebut.
Selanjutnya, program memindai keypad secara bergantian dengan
mengubah iKeyB dan mengatur iKeyC.
Dengan menggunakan array, program dapat dengan efisien mengatur cara display
tujuh segmen menampilkan karakter-karakter tertentu dan juga memeriksa tombol
mana yang ditekan pada keypad. Dengan demikian, array memainkan peran
penting dalam memungkinkan interaksi antara pengguna, display, dan keypad
2. Value Keypad
Dalam coding yang digunakan terdapat penggunaan keypad untuk memasukkan
nilai ke dalam variabel bufferDisplay yang kemudian akan ditampilkan pada
tujuh segmen display LED. Berikut adalah analisis dari berbagai aspek dalam
coding tersebut:
a. Array Kode7s:
Array ini berisi data dalam bentuk byte yang mewakili kode untuk
digit 0 hingga 9 serta karakter khusus. Setiap elemen array mewakili
kode biner untuk tujuh segmen display LED yang digunakan untuk
menampilkan digit atau karakter tertentu.
b. Variabel bufferDisplay:
Variabel ini digunakan untuk menyimpan nilai yang akan ditampilkan
pada tujuh segmen display LED. Nilai ini dapat diubah melalui
keypad.
c. Array keyScan dan Variabel iKey:
Array keyScan berisi konfigurasi bit untuk melakukan pemindaian
keypad. Variabel iKey digunakan sebagai indeks untuk mengakses
elemen-elemen array keyScan.
d. Inisialisasi Pin dan Konfigurasi Keypad:
Di dalam fungsi setup(), terdapat konfigurasi pin input/output pada
PORTD, PORTB, PORTC, DDRC, dan DDRB yang diperlukan untuk
menghubungkan dan mengontrol keypad.
e. Loop Utama:
Loop utama, yaitu fungsi loop(), melakukan pemindaian keypad secara
berulang.
Terdapat dua kondisi waktunya yang digunakan untuk mengatur
tampilan dan pemindaian keypad: tDsp0 untuk tampilan dan tScan0
untuk pemindaian keypad.
f. Tampilan:
Setiap 13 milidetik, kode dalam bufferDisplay akan ditampilkan pada
tujuh segmen display LED melalui PORTD.
g. Pemindaian Keypad:
Setiap 10 milidetik, keypad akan dipindai menggunakan konfigurasi
bit dalam array keyScan.
Kode kunci yang terdeteksi akan disimpan dalam keyDetect dan
kemudian diproses untuk mengubah nilai bufferDisplay.
h. Pengubahan Nilai bufferDisplay:
Nilai keyBuff digunakan untuk menyimpan nilai baru yang akan
ditampilkan di display.
Proses pengubahan ini tergantung pada konfigurasi bit dalam array
keyScan dan nilai yang terdeteksi dalam keyDetect.
i. Iterasi Melalui Array keyScan:
Setelah pemindaian satu set konfigurasi keypad selesai, variabel iKey
akan diincrement. Jika iKey mencapai 4, maka akan direset ke 0.
Coding ini digunakan untuk mengontrol tujuh segmen display LED melalui
sebuah keypad dengan konfigurasi tertentu. Nilai yang dimasukkan melalui
keypad akan ditampilkan pada display.
I. KESIMPULAN
Dalam konteks coding, terdapat perbedaan mendasar antara "Keypad Value" (nilai
keypad) dan "Keypad Array" (matriks keypad). Perbedaan ini berkaitan dengan cara
data dari keypad diproses dan disimpan dalam kode.
1. Keypad Value (Nilai Keypad):
Konsep "Keypad Value" merujuk pada penggunaan nilai-nilai yang langsung
mewakili karakter atau angka dari keypad.
Setiap tombol pada keypad memiliki nilai yang langsung dikaitkan dengan
karakter atau angka yang akan ditampilkan atau diproses.
Nilai-nilai ini dihubungkan langsung ke representasi digit, karakter, atau operasi
yang sesuai.
Contoh implementasi "Keypad Value" dalam kode yang diberikan adalah dengan
menggunakan array Kode7s. Array ini berisi nilai-nilai yang mewakili digit 0
hingga 9 dan karakter khusus.
Coding ini digunakan untuk membaca input dari keypad dan menampilkannya
pada display tujuh segmen. Algoritma yang digunakan untuk menentukan nilai
keyBuff didasarkan pada kombinasi dari keyScan dan keyDetect.
Coding ini digunakan untuk membaca input dari keypad dan menampilkannya
pada display tujuh segmen. Karakter yang ditampilkan pada display tujuh segmen
ditentukan oleh hasil pemindaian keypad dan diambil dari array listKey.
"Keypad Value" lebih sederhana dan langsung dalam pemetaan tombol ke karakter
atau angka, sementara "Keypad Array" memberikan fleksibilitas lebih besar untuk
mengatur hubungan antara tombol keypad dan tampilan yang diinginkan.