TUGAS PENDAHULUAN 1 (MODUL III COMMUNICATION)



MODUL III 
COMMUNICATION


    • Rangkailah seperti rangkaian berikut 
    • Buka Arduino IDE dan masukan listing program Upload program ke arduino 
    • Variasikan tombol yang ditekan dan amati keluarannya pada DOT MATRIX















Prinsip Kerja
Rangkaian ini berfungsi sebagai berikut:
Inisialisasi jenis komunikasi yang digunakan yaitu SPI dengan library #include <SPI.h>.
Inisialisasi Modul MAX7219:
Menggunakan library LedControl.h untuk mengontrol modul dot matrix LED berbasis MAX7219.
Membuat objek lc dari kelas LedControl dengan menghubungkan pin-pins (DIN, CLK, LOAD) ke Arduino.
Master akan mengirimkan bit patern yang mengatur pola dot matrix ke slave, untuk diteruskan ke ic max7219.
Mendefinisikan pin-pins yang digunakan untuk dip switch dan pin kontrol lainnya.
Variabel patterns digunakan untuk menyimpan pola LED yang akan ditampilkan.
Di dalam fungsi setup(), modul dot matrix diaktifkan (lc.shutdown(0, false)), kecerahan layar diatur (lc.setIntensity(0, 8)), dan layar dikosongkan (lc.clearDisplay(0)).
Pin-pin yang terhubung ke motor dan sensor diatur sebagai input atau output.

Di dalam fungsi loop(), nilai dari dipswitch dibaca untuk menentukan tindakan selanjutnya.
Jika switch terdeteksi (HIGH), led akan diaktifkan berdasarkan  dari switch.
Jika tidak ada input dari switch atau input tidak sesuai maka ,  layar dot matrix dikosongkan.








Listing Program

//Master
#include <SPI.h>

const int SS_PIN = 10; // Slave Select pin
const int DIP_Pins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Pin DIP switch terhubung ke Arduino
byte patterns[8] = {0}; // Pola LED untuk ditampilkan

void setup() {
  SPI.begin();
  pinMode(SS_PIN, OUTPUT);
  digitalWrite(SS_PIN, HIGH); // Tidak memilih slave saat ini
  for (int i = 0; i < 8; i++) {
    pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor
  }
}

void loop() {
  // Membaca status DIP switch dan mengupdate pola LED
  for (int i = 0; i < 8; i++) {
    if (digitalRead(DIP_Pins[i]) == LOW) {
      patterns[i] = 0xFF; // Mengatur semua LED menyala jika sakelar diaktifkan
    } else {
      patterns[i] = 0; // Mengatur semua LED mati jika sakelar tidak diaktifkan
    }
  }

  // Mengirim data pola LED ke slave
  digitalWrite(SS_PIN, LOW); // Memilih slave
  for (int i = 0; i < 8; i++) {
    SPI.transfer(patterns[i]);
  }
  digitalWrite(SS_PIN, HIGH); // Melepas slave
  delay(100); // Delay untuk tampilan LED stabil
}

//Slave
#include <SPI.h>
#include <LedControl.h> //Library untuk LED Dot Matrix
const int SS_PIN = 10; // Slave Select pin
LedControl lc=LedControl(2,3,4,1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino
void setup() {
 SPI.begin();
 pinMode(SS_PIN, INPUT); // SS_PIN sebagai input agar Arduino berperan sebagai slave
 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() {
 if (digitalRead(SS_PIN) == LOW) { // Jika dipilih oleh master
 byte patterns[8];
 // Menerima data pola LED dari master
 for (int i = 0; i < 8; i++) {
 patterns[i] = SPI.transfer(0);
 }
 // Menampilkan pola LED pada dot matrix
 for (int row = 0; row < 8; row++) {
 lc.setRow(0, row, patterns[row]);
 }
 }
}



Saat Praktikum

   Percobaan 6 (Tanpa Kondisi)




File HTML klik disini
Rangkaian Simulasi Proteus klik disini
File Video Rangkaian klik disini
File Arduino klik disini
Datasheet Komponen klik disini
 






Tidak ada komentar:

Posting Komentar