TP Percobaan 2 Kondisi 7
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 pada percobaan ini menggunakan total 3 komponen, yaitu satu buah mikrokontroler (ATMEGA328P-PU), push button, dan 7-segment.
Dalam rangkaian ini, push button dengan layout seperti keypad 4x4 berfungsi sebagai input dan 7-segment berfungsi sebagai output. Sesuai dengan program arduino yang telah dibuat pada Arduino IDE, terdapat array matrix 4x4 yang menampilkan layout keypad, dengan masing-masing karakter terhubung ke degan tombol pada rangkaian proteus, sehingga tulisan pada tombol akan muncul di 7-segment saat kita menekan tombol.
Kondisi 7 dalam Percobaan 2 meminta bahwa tombol baris 1 di kolom 4 menampilkan huruf a. Oleh karena itu, jika kita menekan tombol baris 1 di kolom 4 selama 1 detik, 7-segment akan tertulis "a" kembali. Hal yang sama berlaku untuk tombol pagar, tombol bintang, dan tombol 0–9.
Pada kondisi ini diminta untuk menampilkan huruf "a" pada 7-segment, dikondisi tombol pada baris 1 kolom keempat yang dipush. Maka huruf "a" akan terlihat pada 7-segment.
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








