Percobaan 1
Keypad dan 7-segment
1. Foto Hardware dan Diagram Blok [Kembali]
Diagram Blok:
2. Prosedur Percobaan [Kembali]
+ Rangkai semua komponen
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino
+ jalankan program pada simulasi dan cobakan dengan modul
Prinsip Kerja
Rangkaian ini menggunakan komponen satu buah mikrokontroler (ATMEGA328P-PU), push button, dan 7-segment.
Prinsip kerja rangkaian ini ialah dimana push button yang merepresentasikan keypad 4x4 berfungsi sebagai input sedangkan 7-segment berfungsi sebagai output.
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'}, // Keypad 4x4 layout
{'7','8','9','C'},
{'*','0','#','D'}
Sesuai dengan program arduino yang sudah di buat dimana terdapat array matrix 4x4 yang merepresentasikan layout keypad, yang masing-masing karakter terkait degan tombol pada keypad. Jadi apabila kita menekan tombol pada keypad maka akan dimunculkan tulisan tombol tersebut di 7-segment.
Pada Percobaan 2 kondisi 7 ini diminta Button baris 1 kolom 4 menampilkan huruf a. Jadi apabila kita menekan button baris 1 kolom 4 maka 7-segment akan tertulis "a" selama 1 detik sebelum menghapusnya kembali, begitu pula apabila menekan tombol pagar dan tombol bintang dan tombol 0 - 9.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include <Keypad.h>
const byte ROWS = 4; //jumlah baris pada keypad
const byte COLS = 4; //jumlah kolom pada keypad
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}; //pin yang terhubung dengan baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; //pin yang terhubung dengan kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
// Pins untuk seven segment display
const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Perhatikan tanda kurung kurawal yang tidak perlu
const int numSegments = 7; // Harusnya 8 karena jumlah pin seven segment adalah 8
void setup() {
for (int i = 0; i < numSegments; i++) {
pinMode(segmentPins[i], OUTPUT);
digitalWrite(segmentPins[i], LOW);
}
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
displayCharacter(key);
}
}
void displayCharacter(char key) {
switch (key) {
case '0':
displaySegments(true, true, true, true, true, true, false);
break;
case '1':
displaySegments(false, true, true, false, false, false, false);
break;
case '2':
displaySegments(true, true, false, true, true, false, true);
break;
case '3':
displaySegments(true, true, true, true, false, false, true);
break;
case '4':
displaySegments(false, true, true, false, false, true, true);
break;
case '5':
displaySegments(true, false, true, true, false, true, true);
break;
case '6':
displaySegments(true, false, true, true, true, true, true);
break;
case '7':
displaySegments(true, true, true, true, true, true, true);
break;
case '8':
displaySegments(true, true, true, false, false, false, false);
break;
case '9':
displaySegments(true, true, true, true, false, true, true);
break;
case 'A':
displaySegments(true, true, true, true, true, false, true);
break;
case 'B':
displaySegments(false, false, true, true, true, true, true);
break;
case 'C':
displaySegments(true, false, false, true, true, true, false);
break;
case 'D':
displaySegments(false, true, true, true, true, false, true);
break;
default:
turnOffSegments();
break;
}
}
void displaySegments(bool a, bool b, bool c, bool d, bool e, bool f, bool g) {
bool segments[] = {a, b, c, d, e, f, g};
for (int i = 0; i < numSegments; i++) {
digitalWrite(segmentPins[i], segments[i] ? HIGH : LOW);
}
}
void turnOffSegments() {
for (int i = 0; i < numSegments; i++) {
digitalWrite(segmentPins[i], LOW);
}
}
Percobaan 2 kondisi 7 : "Button baris 1 kolom 4 menampilkan huruf a"
᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini
Download Datasheet 7-Segment
Download Datasheet Button
Download Datasheet Arduino Uno
Tidak ada komentar:
Posting Komentar