Kamis, 07 Maret 2024

Tugas Pendahuluan 2




Percobaan 2
Keypad dan 7-Segment

1. Prosedur
[Kembali]

1. Rangkai semua komponen sesuai kondisi yang dipilih
2. buat program di aplikasi arduino IDE
3. setelah selesai masukkan program ke arduino di proteus
4.  jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi
5. Selesai

2. Hardware dan diagram blok [Kembali]
      1. Arduino Uno

      2. Push Button

      3. Power Supply
      6. Ground

Diagram Blok :


3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

→ Gambar Rangkaian Sebelum Disimulasikan
                                    

→ Gambar Rangkaian Setelah Disimulasikan
                                        

PRINSIP KERJA
    Saat program dijalankan dan di masukan ke arduino, selanjutnya, program terus berjalan dalam loop utama, menunggu input dari pengguna. jika ada input dari button akan menyebabkan led hidup, terdapat 2 kondisi dan dimana sebelum kondisi ini dilakukan maka semua led akan di-low-kan terlebih dahulu.
Sesuai dengan kondisinya bahwa button baris 2 kolm 3 akan menampilkan angka 7 pada seven segmen. Sebelum menampilkannya maka running terlebih dahulu proteus, lalu tekan button. inputan dari button akan terbaca oleh arduino dan arduino akan menyesuaikan kondisi yang terbaca melalui program. Setelah program terbaca maka output akan keluar dari arduino memasuki  7-segmen dimana akan ditampilkan angka 7 dimana pada 7-segmen yang berlogika high itu adalah segmen A,B,C, dan D.

4. FlowChart [Kembali]

a. 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, true, true, false, false, false, false);
      break;
    case '7':
      displaySegments(true, false, true, true, true, true, true);
      break;
    case '8':
      displaySegments(true, true, true, true, true, true, true);
      break;
    case '9':
      displaySegments(true, true, true, true, false, true, true);
      break;
    case 'A':
      displaySegments(true, true, true, false, true, true, 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);
  }
}

b. Flowchart

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

6. Video Simulasi [Kembali]

7. Download File [Kembali]
Download Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Datasheet ARDUINO UNO klik disini

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

LAPORAN AKHIR DEMO PROJECT

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