TP1 P2K7





Keypad dan 7-segment

1. Foto Hardware dan Diagram Blok [Kembali]

1. Arduino Uno



        2. Push Button



        3. 7-Segment


        4. Power Supply


     5. Ground


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);
  }
}


5. Kondisi [Kembali]

    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

Ujian Tengah Semester - Soal 3