1. Kondisi[Kembali]
Percobaan 2 kondisi 4
Ubah boud rate pada Slave menjadi 34500
2. Rangkaian simulasi[Kembali]
3. Listing Program[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]
4. Video
5. Prinsip kerja[Kembali]
Pada percobaan ini menerapkan komunikasi SPI, menggunakan 2 arduino satu sebagai master dan lainnya sebagai slave. pada spi ada 4 pin yaitu MOSI, MISO, SCK, dan SS.
MOSI = master mengirim data ke slave
MISO = slave mengirim data ke master
SCK = sinyal clock untuk sinkronisasi data
SS = memilih slave yang diajaka komunikasi.
ketika button pada master ditekan sebagai input maka lampu pada slave akan hidup sebagai respon pengiriman data dari master. dan begitupun sebaliknya.
Tidak ada komentar:
Posting Komentar