PERCOBAAN 6
Rangkaian Komunikasi SPI
- Rangkailah seperti yang ada pada modul
- Buka Arduino IDE dan masukan listing Program
- Upload program ke arduino
- 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]
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]
8. Download File [Kembali]





Tidak ada komentar:
Posting Komentar