Jumat, 03 Mei 2024

Laporan 2 M3




PERCOBAAN 6
Rangkaian Komunikasi SPI


1. Prosedur
 [Kembali]
  1. Rangkailah seperti yang ada pada modul
  2. Buka Arduino IDE dan masukan listing Program
  3. Upload program ke arduino
  4. Mencoba rangkaian
2. Hardware dan Diagram Blok [Kembali]

A. Hardware

1. LED Matriks





2. DipSwitch 




3. Arduino Uno



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]





Prinsip Kerja 

 Master:
    Serangkaian percobaan komunikasi SPI sedang berlangsung. Arduino  bertindak sebagai master  sistem dengan menggunakan saklar sebagai input. Ketika setiap saklar ditekan, 8 diantaranya terhubung ke Arduino, dan Arduino  terus memeriksa status setiap saklar menggunakan fungsi digitalRead(). Ketika sebuah saklar ditekan, Arduino  mengirimkan karakter yang sesuai  menggunakan fungsi SPI.transfer. karakter yang dikirim sesuai dengan sakelar yang ditekan dan  dibaca oleh perangkat budak Arduino.


Slave:
    Arduino kedua berperan sebagai slave yang  menerima input dari master Arduino  dan menghasilkan output berupa dot matrik berukuran 8x8. Prinsip kerja rangkaian diatas adalah  mengontrol output dot matrik yang terhubung ke pin Arduino berdasarkan status dari 8 switch yang terhubung ke pin digital. setup() menyetel pin yang terhubung ke sakelar sebagai input. Program terus memeriksa status saklar di loop(). saat sakelar dalam keadaan hidup, matriks titik pada baris sakelar DIP juga dalam keadaan hidup, dan sebaliknya.

    

4. FlowChart [Kembali]

A. 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] = B11111111; // 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]);
 }
 }
}
     

B. Flowchart





5. Video Demo [Kembali]




6. Kondisi [Kembali]

         Percobaan 6

7. Analisa dan Pembahasan [Kembali]





8. Download File [Kembali]

Download HTML Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO Klik disini

Tidak ada komentar:

Posting Komentar