Minggu, 03 Maret 2024

TUGAS PENDAHULUAN 1 MODUL 1 uP & uC

Modul 1

General Input dan Output


 

  • Buatlah rangkaian sesuai dengan kondisi yang telah dipilih
  • Buat Program pada software Arduino IDE
  • Masukkan program yang telah dibuat pada software Arduino IDE sebagai library Arduino
  • Jalankan rangkaian, sesuai dengan kondisi yang diinginkan

a. Rangkaian Simulasi


Gambar Rangkaian Sebelum Disimulasikan



Gambar Rangkaian Disimulasikan

b. Prinsip Kerja

Pada percobaan 3 kondisi 5, kita menggunakan Dip Switch sebagai input dimana kaki 1 dan 2 Dip Switch terhubung dengan kaki 12 dan 13 arduino dan kaki 3-8 Dip Switch terhubung dengan kaki A0-A5 arduino dan Dot Matrix 8x8 sebagai output dari data yang dikirimkan dari arduino. Kemudain untuk kaki 9-16 Dip Switch itu terhubung dengan ground karena kita akan menggunakan dipswitch yang bersifat pull up yang mana dip switch telah aktif sebelum masuk dalam keadaan ON

Untuk menampilkan outputnya pada Dot matrix kita menggunakan driver IC MAX7219 untuk mengontrol display Dot Matrix 8x8. Dimana kaki ISET dan DOUT terhubung ke VCC dan GND pada Arduino dan tiga pin lainnya, DIN, CLK, dan LOAD terhububung ke pin digital Arduino.

Pada percobaan ini, Suatu kondisi ketika ada 2 switch mana saja yang aktif maka Dot matrix akan aktif, dan akan menampilkan angka 1,2,3 pada Dot Matrix secara bergantian. 

Untuk kondisi awal pada program kita atur dulu agar semua pin mati dan dot matrix tidak menyala, dengan program berikut 

   byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan

Kemudian pada codingan kita masukan kode untuk menampilkan angka 1,2,3 dengan menggunakan code dibawah

byte pattern1[] = { B01000000,B11000000,B01000000,B01000000,B01000000,B01000000,B11100000,}; // Pola LED untuk angka 1
        byte pattern2[] = { B01110000,B10001000,B00001000,B00010000,B00100000,B01000000,B11111000, }; // Pola LED untuk angka 2
        byte pattern3[] = { B11111000,B00010000,B00100000,B00010000,B00001000,B10001000,B01110000 }; // Pola LED untuk angka 3

a. Flowchart





b. Listing Program

#include <LedControl.h> //Library untuk LED Dot Matrix

const int DIP_Pins[] = {13, 12, A0, A1, A2, A3, A4, A5}; // Pin DIP switch terhubung ke Arduino
LedControl lc=LedControl(2,3,4,1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan

void setup() {
    for (int i = 0; i < 8; i++) {
        pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor
    }

    lc.shutdown(0,false); // Mengaktifkan display
    lc.setIntensity(0,8); // Mengatur kecerahan LED (nilai antara 0 dan 15)
    lc.clearDisplay(0); // Membersihkan tampilan dot matrix
}

void loop() {
    // Membaca status DIP switch dan mengupdate pola LED
    int activeSwitches = 0; // Jumlah saklar yang aktif
    for (int i = 0; i < 8; i++) {
        if (digitalRead(DIP_Pins[i]) == LOW) {
            activeSwitches++; // Menghitung jumlah saklar yang aktif
        }
    }

    // Menampilkan angka 2, k, dan 3 secara berurutan jika 2 saklar aktif
    if (activeSwitches == 2) {
        byte pattern1[] = { B01000000,B11000000,B01000000,B01000000,B01000000,B01000000,B11100000,}; // Pola LED untuk angka 1
        byte pattern2[] = { B01110000,B10001000,B00001000,B00010000,B00100000,B01000000,B11111000, }; // Pola LED untuk angka 2
        byte pattern3[] = { B11111000,B00010000,B00100000,B00010000,B00001000,B10001000,B01110000 }; // Pola LED untuk angka 3
       
        // Menampilkan angka 1
for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, pattern1[i]);
    delay(1000); // Delay untuk efek tampilan
}
// Menampilkan angka 2
for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, pattern2[i]);
    delay(1000); // Delay untuk efek tampilan
}
// Menampilkan angka 3
for (int i = 0; i < 8; i++) {
    lc.setRow(0, i, pattern3[i]);
    delay(1000); // Delay untuk efek tampilan
}
    } else {
        // Menampilkan pola LED sesuai dengan status saklar DIP seperti sebelumnya
        for (int i = 0; i < 8; i++) {
            if (digitalRead(DIP_Pins[i]) == LOW) {
                patterns[i] = B11111111; // Mengatur semua LED menyala jika sakelar diaktifkan
            } else {
                patterns[i] = 0; // Mengatur semua LED mati jika sakelar tidak diaktifkan             }         }

        // Menampilkan pola LED pada dot matrix
        for (int row = 0; row < 8; row++) {
            lc.setRow(0, row, patterns[row]);
        }     }     delay(100); // Delay untuk tampilan LED stabil
}

Ketika 2 switch aktif dot matrix akan menampilkan angka 1,2,3. Untuk 2 switch disini bebas yang mana saja dari 8 switch yang ada





Download HTML klik disini
Download Rangkaian Proteus klik disini
Download Program Arduino klik disini
Download Video klik disini
Download Datasheet Driver IC MAX7219 klik disini
Download Datasheet Arduino klik disini
Download Datasheet Dip Switch klik disini


Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Laporan Akhir Project M4

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