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
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]);
}
}
}
Percobaan 6 (Tanpa Kondisi)
Tidak ada komentar:
Posting Komentar