Percobaan 2 Kondisi 6
Keypad & 7-Segment
1. Prosedur [Kembali]
1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
2. Buat program menggunakan Arduino IDE.
3. Transfer program yang telah dibuat ke Arduino yang ada di Proteus.
4. Uji coba program di simulasi sesuai dengan kondisi yang diinginkan.
5. Proses selesai setelah uji coba berhasil dilakukan.
2. Hardware dan Diagram Blok [Kembali]
a. Hardware
1. Modul Arduino Uno
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Prinsip Kerja
Pada percobaan ini, digunakan push button yang diatur seperti keypad 4x4 untuk memasukkan angka. Push button tersebut disusun dalam matriks dengan 4 baris dan 4 kolom. Saat salah satu push button ditekan, terjadi penghubungan antara baris dan kolom tertentu dalam matriks tersebut. Selanjutnya, mikrokontroler melakukan pemindaian secara bergantian pada setiap baris untuk menemukan push button yang ditekan, kemudian melakukan pemindaian pada setiap kolom untuk mengetahui push button mana yang ditekan dalam baris tersebut. Dengan informasi yang diperoleh, mikrokontroler dapat mengidentifikasi angka yang dipilih oleh pengguna. Contohnya, jika push button yang terletak pada baris 3 dan kolom 2 ditekan, maka angka 2 akan dihasilkan. Angka yang teridentifikasi kemudian ditampilkan pada seven segment, memungkinkan pengguna untuk melihatnya secara visual.
4. Flowcharth dan Listing Program [Kembali]
a. Flowcharth
#include <Keypad.h>
const byte ROWS = 4; // Empat baris
const byte COLS = 4; // Empat kolom
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '2', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {A4, A3, A2, A1}; // Hubungkan ke pin baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; // Hubungkan ke pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Hubungkan ke pin segmen seven-segment display
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
char key = keypad.getKey();
if (key) {
displayCharacter(key);
delay(1000);
clearDisplay();
}
}
void displayCharacter(char ch) {
// Pola segmen untuk setiap digit (0-9)
byte patterns[][9] = {
{0, 0, 0, 0, 0, 0, 1, 1}, // 0
{1, 0, 0, 1, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0, 1}, // 2
{0, 0, 0, 0, 1, 1, 0, 1}, // 3
{1, 0, 0, 1, 1, 0, 0, 1}, // 4
{0, 1, 0, 0, 1, 0, 0, 1}, // 5
{0, 1, 0, 0, 0, 0, 0, 1}, // 6
{0, 0, 0, 1, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0, 1}, // 8
{0, 0, 0, 0, 1, 0, 0, 1}, // 9
{0, 0, 0, 0, 0, 1, 0, 1}, // A
{1, 1, 0, 0, 0, 0, 0, 1}, // B
{0, 1, 1, 0, 0, 0, 1, 1}, // C
{1, 0, 0, 0, 0, 1, 0, 1}, // D
};
if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'D')) {
// Dapatkan indeks digit (0-9) dari karakter
int index = (ch <= '9') ? (ch - '0') : (ch - 'A' + 10);
// Tulis pola ke pin segmen
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], patterns[index][i]);
}
}
}
void clearDisplay() {
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], HIGH);
}
}
const byte ROWS = 4; // Empat baris
const byte COLS = 4; // Empat kolom
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '2', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {A4, A3, A2, A1}; // Hubungkan ke pin baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; // Hubungkan ke pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Hubungkan ke pin segmen seven-segment display
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
char key = keypad.getKey();
if (key) {
displayCharacter(key);
delay(1000);
clearDisplay();
}
}
void displayCharacter(char ch) {
// Pola segmen untuk setiap digit (0-9)
byte patterns[][9] = {
{0, 0, 0, 0, 0, 0, 1, 1}, // 0
{1, 0, 0, 1, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0, 1}, // 2
{0, 0, 0, 0, 1, 1, 0, 1}, // 3
{1, 0, 0, 1, 1, 0, 0, 1}, // 4
{0, 1, 0, 0, 1, 0, 0, 1}, // 5
{0, 1, 0, 0, 0, 0, 0, 1}, // 6
{0, 0, 0, 1, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0, 1}, // 8
{0, 0, 0, 0, 1, 0, 0, 1}, // 9
{0, 0, 0, 0, 0, 1, 0, 1}, // A
{1, 1, 0, 0, 0, 0, 0, 1}, // B
{0, 1, 1, 0, 0, 0, 1, 1}, // C
{1, 0, 0, 0, 0, 1, 0, 1}, // D
};
if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'D')) {
// Dapatkan indeks digit (0-9) dari karakter
int index = (ch <= '9') ? (ch - '0') : (ch - 'A' + 10);
// Tulis pola ke pin segmen
for (int i = 0; i < 7; i++) {
digitalWrite(segmentPins[i], patterns[index][i]);
}
}
}
void clearDisplay() {
for (int i = 0; i < 8; i++) {
digitalWrite(segmentPins[i], HIGH);
}
}
5. Kondisi [Kembali]
Percobaan 1 Kondisi5
Button baris 3 kolom 2 menampilkan angka 2
6. Video Simulasi [Kembali]
HTML klik disini
Simulasi klik disini
Gambar Simulasi klik disini
Video Simulasi klik disini
Listing Program klik disini