Selasa, 12 Maret 2024

TP-1 MODUL 1

 



Percobaan 1

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


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

Tidak ada komentar:

Posting Komentar

MODUL 4

Smart Parking Area [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. ...