Modul 1
General Input dan Output
Percobaan 2
DAFTAR ISI
1. Prosedur
2.Hardware dan diagram blok
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Video Demo
6. Kondisi
7. Video Simulasi
8. Download File
- Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
- Buat Program pada software Arduino IDE
- Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
- Jalankan rangkaian, sesuai dengan kondisi yang diinginkan
- Hardware
3. Rangkaian Simulasi dan Prinsip Kerja [kembali]
a. Rangkaian Simulasi
b. Prinsip Kerja
Inti dari teknik scanning keypad adalah dengan memeriksa penekanan tombol secara terus menerus melalui pin baris dan kolom. Berikut ini penjelasan prinsip kerjanya:
Konfigurasi Pin:
- Beberapa pin pada mikrokontroler ditetapkan sebagai output untuk scanning kolom.
- Pin lainnya ditetapkan sebagai input untuk scanning baris.
Scanning Kolom:
- Mikrokontroler akan set semua pin kolom ke LOW (biasanya nilai 0).
- Mikrokontroler kemudian akan set satu pin kolom tertentu menjadi HIGH (biasanya nilai 1).
Scanning Baris:
- Mikrokontroler akan membaca nilai pada pin baris.
- Jika ada tombol ditekan pada baris tersebut dan terhubung dengan kolom yang di-HIGH kan tadi, maka nilai yang dibaca pada pin baris tersebut akan menjadi HIGH.
- Ini dikarenakan adanya jalur koneksi antara tombol yang ditekan dengan kedua pin tersebut (kolom HIGH dan baris yang dibaca).
Identifikasi Tombol:
- Mikrokontroler akan memeriksa pin baris yang bernilai HIGH.
- Kombinasi pin kolom HIGH dan baris HIGH ini akan menunjukkan tombol mana yang ditekan berdasarkan pemetaan matriks keypad.
Scanning Ulangi:
- Mikrokontroler akan mengulang proses scanning kolom (langkah 2) dengan men-HIGH kan pin kolom yang berbeda secara bergantian.
- Dengan demikian semua kombinasi baris dan kolom akan terperiksa secara berkala.
Dengan teknik scanning ini, mikrokontroler dapat mengidentifikasi tombol yang ditekan pada keypad matriks dengan menggunakan lebih sedikit pin dibanding jika harus menghubungkan setiap tombol secara individual.
a. Flowchart
b. Listing Program
const int rows = 4; // Jumlah baris pada keypad
const int cols = 3; // Jumlah kolom pada keypad
byte rowPins[rows] = {2, 3, 4, 5}; // Pin yang terhubung ke baris keypad
byte colPins[cols] = {6, 7, 8}; // Pin yang terhubung ke kolom keypad
byte patterns[rows][cols] = {
{0b0001, 0b0010, 0b0100},
{0b1000, 0b1001, 0b1100},
{0b0110, 0b1110, 0b1111},
{0b0011, 0b1011, 0b1101}
};
char keys[rows][cols] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
char pressedKey = ' ';
void setup() {
Serial.begin(9600);
for (int i = 0; i < cols; i++) {
pinMode(colPins[i], OUTPUT);
}
for (int i = 0; i < rows; i++) {
pinMode(rowPins[i], INPUT);
}
}
void loop() {
for (int i = 0; i < cols; i++) {
digitalWrite(colPins[i], LOW);
}
for (int i = 0; i < rows; i++) {
byte rowPattern = patterns[i][0];
for (int j = 1; j < cols; j++) {
rowPattern |= patterns[i][j];
}
digitalWrite(rowPins[i], LOW);
delayMicroseconds(10);
byte readPattern = 0;
for (int j = 0; j < cols; j++) {
readPattern <<= 1;
readPattern |= digitalRead(colPins[j]);
}
digitalWrite(rowPins[i], HIGH);
if (readPattern == rowPattern) {
pressedKey = keys[i][j];
break;
}
}
if (pressedKey != ' ') {
Serial.print("Tombol yang ditekan: ");
Serial.println(pressedKey);
pressedKey = ' '; // Reset pressedKey
}
}
Percobaan 2 Kondisi saat Button ditekan pada baris dan kolom yang ditentukan akan menampilkan angka yang sidah disetting misal: baris 1 kolom 1 menampilkan angka 1
Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino klik disini
Download Video klik disini
Tidak ada komentar:
Posting Komentar