DAFTAR ISI
1. Prosedur
2. Hardware dan Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Kondisi
6. Video Demo
7. Download File

MODUL 3: Communication
Selasa, 30 April 2024
Laporan Akhir 2

1. Prosedur
a. Susunlah seperti rangkaian yang ada,
b. Buka Arduino IDE dan masukkan listing program, 
c. Unggah program ke Arduino, dan
d. Variasikan sesuai kondisi.

2. Hardware dan Diagram Blok
a) Modul Arduino

b) ESP32

c) Dipswitch

d) LED

e) Seven Segment

Percobaan 6

3. Rangkaian Simulasi dan Prinsip Kerja
Percobaan 6


(Kipas dan motor DC tidak dipakai)
Sistem ini terdiri dari dua Arduino, satu bertindak sebagai master dan satu lagi sebagai slave. Arduino master terhubung ke 8 Dip Switch, yang berfungsi sebagai input data. Status Dip Switch dibaca dan diubah menjadi kode digital, yang kemudian dikirim ke Arduino slave melalui komunikasi SPI. Arduino slave menerima kode digital dari master dan menginterpretasikannya sebagai pola LED. Pola LED ini kemudian ditampilkan pada Dot Matriks, menghasilkan representasi visual dari data yang diterima. 

4. Flowchart dan Listing Program
Percobaan 6

//Master
 #include <SPI.h>

int dip[] = {2,3,4,5,6,7,8,9};
int dipvalue[] = {};

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

 void loop(void) {
  byte Mastersend;
 // Membaca status DIP switch dan mengupdate pola LED
int x = 1;
 for(int i = 0; i < 8; i++){
dipvalue[i] = digitalRead(dip[i]);
 if(dipvalue[i] == LOW){
 x = dip[i];
 }
 }
 digitalWrite(SS, LOW);
 Mastersend = x;
 Serial.println(Mastersend);
 SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
}

//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
volatile byte po;
volatile boolean received = false;

void setup() {
 SPCR |= _BV(SPE);
 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
 Serial.begin(9600);
 SPI.attachInterrupt();
}
ISR (SPI_STC_vect){
  po = SPDR;
  received = true;
}
void loop() {
  Serial.println(po);
  Serial.println(received);
 if (received) { // Jika dipilih oleh master
 byte patterns[8];
 // Menerima data pola LED dari master
 for (int i = 0; i < 8; i++) {
 patterns[i] = po;
 }
 // Menampilkan pola LED pada dot matrix
 for (int row = 0; row < 8; row++) {
 lc.setRow(0, row, patterns[row]);
 }
 }
}

5. Kondisi
Pada percobaan kali ini, kami melakukan percobaan ke-6 yakni mengkomunikasikan dengan protokol SPI.

6. Video Demo

7. Download File
Unduh HTML di sini
Unduh Video Demo di sini
Unduh Datasheet Arduino UNO di sini
Unduh Datasheet ESP32 di sini
Unduh Datasheet Dipswitch di sini
Unduh Datasheet LED di sini
Unduh Datasheet Seven Segment di sini