Ubah boud rate pada slave menjadi 34500
2. Rangkaian Simulasi [Kembali]
PADA MASTER
#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()
{
Serial.begin(34500);
pinMode(LEDpin,INPUT);
pinMode(buttonpin,OUTPUT);
pinMode(MISO,OUTPUT);
SPCR |=_BV(SPE);
received=false;
SPI.attachInterrupt();
}
ISR(SPI_STC_vect)
{
Slavereceived=SPDR;
received== true;
}
void loop()
{
if(Slavereceived==1)
{
digitalWrite(LEDpin,HIGH);
}
else
{
digitalWrite(LEDpin,LOW);
Serial.println("Slave LED OFF");
}
buttonvalue=digitalRead(buttonpin);
if(buttonvalue==HIGH)
{
x=1;
}
else
{
x=0;
}
Slavesend=x;
SPDR=Slavesend;
delay(100);
}
PADA SLAVE
#include<SPI.h>
#define LED 7
#define ipbutton 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(34500);
pinMode(ipbutton,INPUT);
pinMode(LED,OUTPUT);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}
void loop(void)
{
byte Mastersend,Mastereceive;
buttonvalue=digitalRead(ipbutton);
if(buttonvalue==HIGH)
{
x=1;
}
else
{
x=0;
}
digitalWrite(SS,LOW);
Mastersend=x;
Mastereceive=SPI.transfer(Mastersend);
if(Mastereceive==1)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}
delay(100);
}
#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()
{
Serial.begin(34500);
pinMode(LEDpin,INPUT);
pinMode(buttonpin,OUTPUT);
pinMode(MISO,OUTPUT);
SPCR |=_BV(SPE);
received=false;
SPI.attachInterrupt();
}
ISR(SPI_STC_vect)
{
Slavereceived=SPDR;
received== true;
}
void loop()
{
if(Slavereceived==1)
{
digitalWrite(LEDpin,HIGH);
}
else
{
digitalWrite(LEDpin,LOW);
Serial.println("Slave LED OFF");
}
buttonvalue=digitalRead(buttonpin);
if(buttonvalue==HIGH)
{
x=1;
}
else
{
x=0;
}
Slavesend=x;
SPDR=Slavesend;
delay(100);
}
PADA SLAVE
#include<SPI.h>
#define LED 7
#define ipbutton 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(34500);
pinMode(ipbutton,INPUT);
pinMode(LED,OUTPUT);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV8);
}
void loop(void)
{
byte Mastersend,Mastereceive;
buttonvalue=digitalRead(ipbutton);
if(buttonvalue==HIGH)
{
x=1;
}
else
{
x=0;
}
digitalWrite(SS,LOW);
Mastersend=x;
Mastereceive=SPI.transfer(Mastersend);
if(Mastereceive==1)
{
digitalWrite(LED,HIGH);
}
else
{
digitalWrite(LED,LOW);
}
delay(100);
}
4. Video
[Kembali]
5. Prinsip Kerja [Kembali]
Terdapat 2 Arduino yang dimana 1 master dan satu slave yang akan menggunakan komuikasi dalam menjalankan percobaan kali ini, dengan memasukkan listring program pada master dan slaveDalam Komunikasi SPI, metode komunikasi antar device dilakukan secara serial atau bergantian. Berdasarkan rangkaian yang telah dibuat terdapat dua device yang terhubung yang salah satunya akan bertindak sebagai Master dan yang lainnya akan bertindak sebagai Slave. Dimana, Master device merupakan device yang memulai sambungan dan melakukan kontrol data. Saat kedua device sudah terkoneksi, master dapat meminta request data baik mengirim data ataupun menerima data. Ketika rangkaian dijalankan, arus yang mengalir akan masuk kedalam input master, dan akan diolah pada master. Selanjutnya hasil yang telah diproses pada master tadi akan keluar dan akan menjadi input pada pin slave. Selanjutnya slave akan memverifikasi data yang telah dikirim oleh master tadi. SPI menggunakan 4 pin untuk berkomunikasi, yaitu MOSI, MISO, SCK dan SS.
ketika button pada master di tekan sebagai input maka lampu pada slave akan hidup ssebagai output dan begitupun sebaliknya, ketika button pada slve di tekan sebagai input maka lampu pada master akan hidup sebagai output.
Datasheet Arduino UNO Link Download
Library Link Download
Library Link Download
Tidak ada komentar:
Posting Komentar