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 :
Pada susunan keypad seperti yang dijelaskan dalam konfigurasi rangkaian, digunakan tombol tekan yang diatur sedemikian rupa seperti keypad 4x4 untuk memasukkan angka (keypad 4x4 dapat diatur melalui kode program Arduino). Tombol tekan tersebut tersusun dalam matriks dengan 4 baris dan 4 kolom. Tombol tekan ini diintegrasikan dengan Arduino, di mana baris keypad dihubungkan ke pin A4, A3, A2, A1, dan kolom keypad dihubungkan ke pin 10, 11, 12, 13. Output dari Arduino berupa 7-segment common anoda 2 digit yang dihubungkan ke pin 9, 8, 7, 6, 5, 4, 3, 2 pada Arduino yang digunakan.
Prinsip operasinya adalah ketika salah satu tombol tekan yang bertindak sebagai keypad ditekan, mikrokontroler akan secara bergantian membaca setiap baris untuk mengidentifikasi tombol tekan yang ditekan. Setelah baris yang ditekan terdeteksi, mikrokontroler akan memindai setiap kolom untuk menentukan tombol tekan mana yang ditekan dalam baris tersebut. Dengan informasi tersebut, mikrokontroler dapat mengonversi posisi tombol tekan yang ditekan menjadi angka yang sesuai. Sesuai dengan kode program yang digunakan, jika kondisinya adalah Tombol Baris 2 kolom 3 akan menampilkan angka 7, maka angka yang diperoleh akan ditampilkan pada seven segment. Mikrokontroler mengendalikan setiap digit pada seven segment untuk menampilkan output yang sesuai dan benar berdasarkan kondisi yang telah ditentukan.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
#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','6','B'}, // Layout keypad 4x4
{'7','8','9','C'},
{'*','0','#', 'D'}
};
byte rowPins[ROWS] = {A4, A3, A2, A1}; // Hubungkan dengan pin baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; // Hubungkan dengan pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
const int segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Hubungkan dengan pin-pins segment seven-segment display
void setup() {
for (int i = 0; i < 8; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], HIGH); // Atur semua segment off (common anode)
}
}
void loop() {
char key = keypad.getKey();
if (key) {
displayCharacter(key);
delay(1000);
clearDisplay();
}
}
void displayCharacter(char ch) {
// Definisikan pola segment untuk setiap digit (0-9)
// Contoh: Menampilkan '1'
// A
// F B
// G
// E C
// D
byte patterns[][8] = {
{0, 0, 0, 0, 0, 0, 1}, // 0
{1, 0, 0, 1, 1, 1, 1}, // 1
{0, 0, 1, 0, 0, 1, 0}, // 2
{0, 0, 0, 0, 1, 1, 0}, // 3
{1, 0, 0, 1, 1, 0, 0}, // 4
{0, 1, 0, 0, 1, 0, 0}, // 5
{0, 1, 0, 0, 0, 0, 0}, // 6
{0, 0, 0, 1, 1, 1, 1}, // 7
{0, 0, 0, 0, 0, 0, 0}, // 8
{0, 0, 0, 0, 1, 0, 0}, // 9
{0, 0, 0, 0, 0, 1, 0}, // A
{1, 1, 0, 0, 0, 0, 0}, // B
{0, 1, 1, 0, 0, 0, 1}, // C
{1, 0, 0, 0, 0, 1, 0} // D
};
int index;
if (ch >= '0' && ch <= '9') {
index = ch - '0';
} else if (ch >= 'A' && ch <= 'D') {
index = ch - 'A' + 10;
} else {
return;
}
// Tulis pola ke pin-pin segment
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); // Matikan semua segment
}
}
Percobaan 2 : Keypad dan Seven Segment
6. Video Demo [Kembali]
7. Soal Analisa
[Kembali]
1. Analisa pengaruh apabila program pada void loop dipindahkan ke void set up
Jawab:
Void setup () digunakan untuk tujuan inisialisasi satu kali yang mengkonfigurasi komponen perangkat keras arduino (pin, timer, komunikasi serial, dan lainnya) serta menetapkan kondisi awal variabel. Fungsi ini hanya dijalankan sekali pada awal program. Jika kode melibatkan pengaturan pin sebagai input atau output, menentukan baud rate untuk komunikasi serial, atau menginisialisasi library, tindakan ini cocok untuk void setup().
Void loop() merupakan suatu fungsi yang dapat menampung kode yang dieksekusi berulang -ulang dalam loop tak berujung, mengontrol aliran program utama dan berinteraksi dengan perangkat keras atau lingkungan eksternal. Setiap kode yang perlu dijalankan secara terus menerus atau pada interval tertentu, seperti membaca nilai sensor, mengontrol output berdasarkan data sensor, melakukan perhitungan, atau mengirim data melalui serial, termasuk dalam void loop().
Apabila program pada void loop() dipindahkan ke void setup(), maka kode tersebut hanya akan dijalankan sekali selama inisialisasi, bukan berulang kali. Hal ini dapat menyebabkan perilaku tak terduga jika kode tersebut dimaksudkan untuk berjalan terus menerus atau pada interval tertentu. Jika memindahkan kode yang bergantung pada nilai atau status yang ditetapkan pada void loop() ke void setup(), maka kode tersebut dijalankan sebelum nilai tersebut tersedia, sehingga dapat menyebabkan masalah.
2. Analisa jenis 7-segmen yg digunakan, apa commonnya, dan jelaskan kenapa penggunaan common tersebut
Jawab:
Seven segmen yang digunakan adalah seven segmen 2 digit dan mempunyai 10 kaki (7 kaki untuk seven segmen , 1 kaki untuk digit 1, 1 kaki untuk digit 2, 1 kaki untuk dp).
dig 1 adalah pin power untuk digit 1 dan dig 2 adalah power untuk digit 2. Untuk perccobaan ini, kita menggunakan seven segmen common anoda. Karena semua kutub anoda (positif) dari LED dalam seven segmen disalurkan secara paralel dan dihubungkan ke VCC, lalu kaki katoda (negatif) LED dihubungkan melalui resistor pembatas arus keluar dari penggerak LED. Karena dihubungkan ke VCC, maka seven segmen common anoda ini beroperasi pada kondisi aktif LOW.
Tidak ada komentar:
Posting Komentar