Laporan Akhir 2 Modul 3
(Percobaan 6)
1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
2. Buat program menggunakan Arduino IDE.
3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.
4. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.
5. Selesai
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi :
Prinsip Kerja :
Program ini merupakan contoh komunikasi antara dua Arduino menggunakan protokol SPI (Serial Peripheral Interface), di mana salah satu Arduino bertindak sebagai master dan yang lainnya sebagai slave. Arduino yang bertindak sebagai master akan terhubung dengan inputan yaitu Dip Switch, sedangkan Arduino yang bertindak sebagai slave terhubung ke outputnya yaitu Dot Matriks.
Prinsip kerjanya yaitu :
- Master: Membaca status saklar Dip Switch dan mengirimkan nilai yang dibaca melalui SPI ke slave.
- Slave: Menerima data dari master melalui SPI, kemudian menampilkan pola LED pada dot matrix yang sesuai dengan data yang diterima.
Keduanya berinteraksi melalui komunikasi SPI, di mana master mengirimkan data dan slave menerima serta menanggapinya.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
Listing Program :
//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
[Kembali]
Percobaan 6 Komunikasi SPI
6. Video Demo [Kembali]
7. Download File
[Kembali]
Download HTML klik disini
Download Video Demo klik disini
Download Listing Program klik disini
Download Datasheet Arduino klik disini
Download Datasheet Dot Matrix klik disini
Download Datasheet Dip Switch klik disini
Tidak ada komentar:
Posting Komentar