- Back to Home »
- Laporan Akhir 1
Jumat, 08 Maret 2024
Laporan Akhir Percobaan 1
== Percobaan 4 ==
- Membuka proteus
- Buka file proteus yang sudah disesuaikan dengan kondisi
- Running rangkaiannya
- Sesuaikan dengan kondisi yang diinginkan
Keypad
#include <LettersKeypad.h>
#include <Keypad.h>
#include <LiquidCrystal.h>
// Penjelasan Keypad
const byte ROWS = 4;
const byte COLS = 3;
// LCD dihubungkan dengan pin A0 hingga A5 pada Arduino
const int rs = A0, en = A1, d4 = A2, d5 = A3, d6 = A4, d7 = A5;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Membuat objek LCD dengan pin yang telah ditentukan sebelumnya
char hexaKeys[ROWS][COLS] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
// Connections to Arduino
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3};
// Penjelasan LED pins
const int ledPins[] = {10, 11, 12, 13}; // Assuming LEDs are connected to digital pins 10 to 13
// Menentukan pin yang digunakan untuk mengontrol LED, di sini diasumsikan LED dihubungkan ke pin digital 10 hingga 13
Keypad customKeypad = Keypad(makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
void setup() {
// Setup serial monitor
Serial.begin(9600);
lcd.begin(16, 2);
// Inisialisasi pin LED sebagai output
for (int i = 0; i < 4; ++i) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
// Membaca tombol yang ditekan pada keypad
char customKey = customKeypad.getKey();
if (customKey) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Tombol: ");
lcd.print(customKey);
// Jika tombol ditekan, tampilkan tombol tersebut pada LCD dan aktifkan LED sesuai dengan kombinasi yang ditentukan
switch (customKey) {
case '1':
activateLEDs(0, 0, 0, 1); // Turn on LED 4
break;
case '2':
activateLEDs(0, 0, 1, 0); // Turn on LED 3
break;
case '3':
activateLEDs(0, 1, 0, 0); // Turn on LEDs 3 and 4
break;
case '4':
activateLEDs(1, 0, 0, 0); // Turn on LED 2
break;
case '5':
activateLEDs(1, 1, 0, 0); // Turn on LEDs 2 and 4
break;
case '6':
activateLEDs(0, 1, 1, 0); // Turn on LEDs 2 and 3
break;
case '7':
activateLEDs(0, 0, 1, 1); // Turn on LEDs 2, 3, and 4
break;
case '8':
activateLEDs(0, 1, 1, 1); // Turn on LED 1
break;
case '9':
activateLEDs(1, 1, 1, 1); // Turn on LEDs 1 and 4
break;
case '0':
activateLEDs(0, 0, 0, 0); // Turn on LEDs 1 and 3
break;
case '*':
activateLEDs(0, 0, 0, 0); // Turn on LEDs 1, 3, and 4
break;
case '#':
activateLEDs(0, 0, 0, 0); // Turn on LEDs 1 and 2
break;
default:
// Matikan semua LED jika ada salah tekan
activateLEDs(0, 0, 0, 0);
break;
}
}
}
// Mengaktifkan atau menonaktifkan LED berdasarkan kombinasi yang diberikan
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);
}
Modul 1: 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 transfer data. Saat pin D4-D7 yang dihubungkan ke output Arduino, maka data yang dihasilkan itu 4 bit data saja. Jika menggunakan pin D0-D7 maka data yang dihasilkan itu 8 bit data. Dalam penggunaan 8 bit, proses transfer data akan panjang yang berarti memakan waktu yang lama. Oleh karena itu, pada percobaan ini yang dipakai hanyalah D4-D7 saja. Kesimpulannya, baik 8 bit maupun 4 bit data dapat diterima oleh sistem LCD. Tapi, jika ingin menghemat waktu yang dipakai adalah yang 4 bit saja.
2. Analisa bagaimana cara kerja dari keypad sehingga bisa menampilkan hasil pada LCD, jelaskan kenapa!
Jawab:
Pertama, keypad akan membaca input yang diterima (R1-R4,C1-C4) yang mana setelah itu arduino melakukan pemindaian matriks yang menentukan tombol mana yang ditekan. Setelah itu arduino akan memetakan lokasi dari tombol yang ditekan tadi, contoh jika baris ke-1 dan kolom ke-3 maka hasilnya "2".
Untuk menampilkan hasil pemetaan tadi itu menggunakan LCD, yang mana pin RS dihubungkan ke A0 untuk mengirimkan data, pin D4-D7 LCD dihubungkan ke output arduino. Maka, nantinya arduino mengirimkana data yang dipetakan. Dan, hasilnya ditampilkan pada LCD.