NIM : 2110951004

.

Minggu, 03 Maret 2024

M1_TP 2_Prak uPuC




1. Prosedur
[Kembali]
  1. Rangkai seluruh komponen alat dan bahan yang diperlukan sesuai dengan kondisi percobaan yang dipilih.
  2. Buat program arduino pada aplikasi Arduino IDE sesuai dengan kondisi percobaan.
  3. Verifikasi atau upload program pada arduino. Pastikan aplikasi Arduino IDE sudah mendownload library yang dibutuhkan dan sudah memilih board arduino yang sesuai.
  4. Jalankan atau uji coba rangkaian yang telah dibuat, dengan memvariasikan button sesuai dengan kondisi.
  5. Perhatikan tampilan output pada LCD.
  6. Rangkaian telah selesai dibuat.
2. Hardware dan Diagram Blok [Kembali]
A. Hardware
1. Modul Arduino Uno



2. Push Button

3. Seven Segment


B. Diagram Blok

3. Rangkaian Simulasi dan Prinsip kerja [Kembali]
A. Rangkaian Simulasi

B. Prinsip Kerja
     Seven-segment display digunakan untuk menampilkan karakter yang dimasukkan melalui keypad. Setiap segmen pada seven-segment display diatur sebagai output, sehingga mikrokontroler dapat mengontrol tampilan karakter dengan menyalakan atau mematikan segmen-segmen tersebut.

Pada percobaan ini, digunakan push button yang disusun seperti keypad 4x4 untuk memasukkan angka. Push button tersebut tersusun dalam matriks 4 baris dan 4 kolom. Saat salah satu push button ditekan, itu menghubungkan baris dan kolom tertentu dalam matriks. Mikrokontroler kemudian memindai setiap baris secara bergantian untuk menemukan push button yang ditekan, lalu memindai setiap kolom untuk mengetahui push button mana yang ditekan dalam baris tersebut. Jika tombol yang ditekan adalah tombol pada baris 3 kolom 2 (tombol '2'), maka akan menampilkan karakter '2' pada seven-segment display dan kemudian dihapus setelah 1 detik. Jika tombol lainnya ditekan, program akan mencari indeks karakter pada array keys dan menampilkan karakter tersebut pada seven-segment display sebelum dihapus setelah 1 detik.

4. Flowchart dan Listing Program [Kembali]
A. Flowchart

B. Listing Program

#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'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins[ROWS] = {A4, A3, A2, A1}; // Hubungkan ke pin baris keypad
byte colPins[COLS] = {10, 11, 12, 13}; // Hubungkan ke pin kolom keypad

Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

const int segmentPins[] = {9, 8, 7, 6, 5, 4, 3, 2}; // Hubungkan ke pin segmen seven-segment display

void setup() { //fungsinya untuk mengatur pin-pin dari seven-segment display sebagai output
  for (int i = 0; i < 8; i++) {
    pinMode(segmentPins[i], OUTPUT);
  }
}

void loop() {
  char key = keypad.getKey(); //membaca tombol yang ditekan pada keypad
  if (key) {
    if (key == keys[2][1]) { // Jika tombol di baris 3 kolom 2 ditekan
      displayCharacter('2');
      delay(1000);
      clearDisplay();
    } else { // Jika tombol selain di baris 3 kolom 2 ditekan
      // Temukan indeks tombol pada array keys
      int rowIndex = -1;
      int colIndex = -1;
      for (int i = 0; i < ROWS; i++) {
        for (int j = 0; j < COLS; j++) {
          if (key == keys[i][j]) {
            rowIndex = i;
            colIndex = j;
            break;
          }
        }
        if (rowIndex != -1) {
          break;
        }
      }

      // Jika indeks ditemukan, tampilkan karakter yang sesuai
      if (rowIndex != -1 && colIndex != -1) {
        displayCharacter(keys[rowIndex][colIndex]);
        delay(1000);
        clearDisplay();
      }
    }
  }
}

void displayCharacter(char ch) {
  // Pola segmen untuk setiap digit (0-9)
  byte patterns[][8] = {
    {0, 0, 0, 0, 0, 0, 1, 1}, // 0
    {1, 0, 0, 1, 1, 1, 1, 1}, // 1
    {0, 0, 1, 0, 0, 1, 0, 1}, // 2
    {0, 0, 0, 0, 1, 1, 0, 1}, // 3
    {1, 0, 0, 1, 1, 0, 0, 1}, // 4
    {0, 1, 0, 0, 1, 0, 0, 1}, // 5
    {0, 1, 0, 0, 0, 0, 0, 1}, // 6
    {0, 0, 0, 1, 1, 1, 1, 1}, // 7
    {0, 0, 0, 0, 0, 0, 0, 1}, // 8
    {0, 0, 0, 0, 1, 0, 0, 1}, // 9
    {0, 0, 0, 0, 0, 1, 0, 1}, // A
    {1, 1, 0, 0, 0, 0, 0, 1}, // B
    {0, 1, 1, 0, 0, 0, 1, 1}, // C
    {1, 0, 0, 0, 0, 1, 0, 1}, // D
  };
 
  if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'D')) {
    // Dapatkan indeks digit (0-9) dari karakter
    int index = (ch <= '9') ? (ch - '0') : (ch - 'A' + 10);
   
    // Tulis pola ke pin segmen
    for (int i = 0; i < 8; i++) {
      digitalWrite(segmentPins[i], patterns[index][i]);
    }
  }
}

void clearDisplay() {
  for (int i = 0; i < 8; i++) {
    digitalWrite(segmentPins[i], HIGH);
  }
}


5. Kondisi [Kembali]
    Percobaan 2 Kondisi 6 :
    Button baris 3 kolom 2 menampilkan angka 2

6. Video Simulasi [Kembali]



7. Download File [Kembali]

File Rangkaian Proteus 
Share:

0 komentar:

Posting Komentar

Blogger news

Blogger templates