1. Rangkai rangkaian pada alat sesuai dengan modul.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan rangkaian.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan rangkaian.
2. Hardware dan Diagram Blok
[Kembali]
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Prinsip Kerja :
Keypad 4 baris * 3 kolom terhubung dengan arduino sebagai input. Double seven segment dengan arduino sebagai output. Prinsip kerjanya adalah mikrokontroler akan melakukan scanning terus menerus ke key, sampai key ditekan, maka scan akan terhenti dan mikrokontroler akan melakukan identifikasi posisi dari key dengan pembacaan RnCn ketika salah satu key ditekan. Lalu arduino akan memproses inputan pada key dengan kodingan yang telah ditetapkan dan akan mengirimkan data ke double seven segment sebagai output. Output yang ditampilkan akan sesuai dengan apa yang tertulis pada key di keypad dari angka 0 - 9, sedangkan untuk "* dan #" tidak bisa ditampilkan di seven segment. Karakter seperti '*' dan '#' bukan karakter standar yang dapat ditampilkan oleh seven segmen. Karakter tersebut tidak ada dalam set karakter yang didukung oleh display seven segmen secara default.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
//Percobaan 2
#include <Keypad.h>
const byte ROWS = 4; // Four rows
const byte COLS = 4; // Fou columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'}, // Keypad 4x4 layout
{'7','8','9','C'},
{'*','0','#', 'D'}
};
byte rowPins[ROWS] = {A4, A3, A2, A1}; // Connect to the keypad row pins
byte colPins[COLS] = {10, 11, 12}; // Connect to the keypad column pins
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Connect to the seven-segment display segment pins
void setup() {
Serial.begin(9600);
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
}
}
void loop() {
char key = keypad.getKey();
if (key) {
displayCharacter(key);
Serial.print(key);
delay(1000);
clearDisplay();
}
}
void displayCharacter(char ch) {
// Define segment patterns for each digit (0-9)
// Example: Displaying '1'
// A
// F B
// G
// E C
// D
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')) {
// Get the digit index (0-9) from the character
int index = (ch <= '9')? (ch - '0') : (ch - 'A' + 10);
// Write the pattern to the segment pins
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 2 : Keypad dan Seven Segment
6. Video Demo [Kembali]
7. Soal Analisa
[Kembali]
1. Jelaskan proses scanning pada keypad menggunakan library
Jawab :
Dimisalkan keypad yang digunakan adalah keypad 3 x 3, yaitu baris (R1, R2, R3) dan 3 kolom (C1, C2, C3). Untuk baris dinyatakan dengan low, dan untuk kolom dinyatakan high saat aktif, atau ditekan. Jadi, mikrokontroller akan mendeteksi keypad ditekan saat kolom berlogika highm untuk posisi keypad mana yang sedang ditekan dinotasikan dengan (RnCn). Mikrokontroller akan melakukan scanning terus menerus untuk tiap posisi keypad, dengan delay 10 ms, untuk tabel scanning :
Mikrokontroleer akan berhenti melakukan scanning saat suatu key ditekan dan akan melanjutkan scanning lagi sampai suatu key ditekan
2. Apakah key pada keypad dapat ditekan bersamaan untuk menampilkan 2 data bersamaan ? Jika iya jelaskan bagaimana dan jika tidak jelaskan kenapa !
Jawab :
Keypad saat ditekan bersamaan tidak dapat menampilkan 2 data bersamaan, karena saat 1 key ditekan, maka mikrokontroller akan berhenti melakukan scanning selama key tersebut ditekan, sehingga saat ditekan lagi key lainnya, maka key yang lain tersebut tidak akan memunculkan output karena tidak ter-scanning
Tidak ada komentar:
Posting Komentar