Laporan
Akhir Percobaan 2
1. Komponen [kembali]
2. Rangkaian [kembali]
3. Flowchart [kembali]
4. Listing Program [kembali]
//Master
#include<SPI.h>
#define
buzz 7
#define
ipbutton 2
int
buttonvalue;
int
x;
void
setup (void)
{
Serial.begin(115200);
pinMode(ipbutton,INPUT_PULLUP);
pinMode(buzz,OUTPUT);
SPI.begin();
SPI.setClockDivider(SPI_CLOCK_DIV4);
digitalWrite(SS,HIGH);
}
void
loop(void)
{
byte
Mastersend,Mastereceive;
buttonvalue
= digitalRead(ipbutton);
if(buttonvalue == LOW)
{
x = 1;
}
else
{
x
= 0;
}
digitalWrite(SS, LOW);
Mastersend = x;
Mastereceive=SPI.transfer(Mastersend);
if(Mastereceive == 1)
{
digitalWrite(buzz,HIGH);
Serial.println("Master
Buzz ON");
delay(1000);
}
else
{
digitalWrite(buzz,LOW);
}
delay(1000);
}
//
Slave
#include<SPI.h>
#define
buzz 7
#define
buttonpin 2
volatile
boolean received;
volatile
byte Slavereceived,Slavesend;
int
buttonvalue;
int
x;
void
setup()
{
Serial.begin(115200);
pinMode(buttonpin,INPUT_PULLUP);
pinMode(buzz,OUTPUT);
pinMode(MISO,OUTPUT);
SPCR |= _BV(SPE);
received
= false;
SPI.attachInterrupt();
}
ISR
(SPI_STC_vect)
{
Slavereceived
= SPDR;
received
= true;
}
void
loop()
{
if(received)
{
if
(Slavereceived==1)
{
digitalWrite(buzz,HIGH);
Serial.println("Slave
buzz ON");
delay(1000);
}
else
{
digitalWrite(buzz,LOW);
Serial.println("Slave
buzz OFF");
}
buttonvalue = digitalRead(buttonpin);
if (buttonvalue == LOW)
{
x=1;
}
else
{
x=0;
}
Slavesend = x;
SPDR = Slavesend;
delay(1000);
}
}
5. Video Simulasi [kembali]
6. Analisa [kembali]
1. Dari
program yang dijalankan, apakah melakukan komunikasi simplex, half duplex atau
full duplex? (analisa dari mana ke mana? Apakah master ke slave? Dan
sebagainya? Jelaskan)
Jawab :
Pada
SPI memiliki 3 jalur komunikasi yaitu MOSI, MISO, dan CLK. Apabila kita memilih
salah satu jalur komunikasi yang kita deklarasikan ke arduino, maka komunikasi
tersebut akan memberikan informasi secara dua arah tetapi data tersebut sampai
secara tidak bersamaan. Dari percobaan diatas didapatkan bahwa komunikasi yang
digunakan yaitu half duplex, jadi proses transfer data itu secara dua arah,
yang pertama dari master ke slave, lalu data tersebut di proses terlebih
dahulu, setelah itu data ini akan ditransfer dari slave ke master.
2. Jika
serial begin (115200) di master diganti menjadi 9600 dan di slave tetap apa
yang akan terjadi? Dan sebaliknya?
Jawab :
Tidak ada
perubahan yang terjadi pada rangkaian, rangkaian tetap bisa berjalan, dan pada
listing program pun bisa di running. Hal ini disebabkan karena serial begin
berfungsi mengatur baudrate / kecepatan transmisi data antar Arduino. Jadi
jikapun antara slave dan master berbeda serial.beginnya maka hanya berpengaruh
pada kecepatan transmisi datanya saja, sedangkan program ataupun rangkaian
tetap bisa berjalan.
3. SPI_setClockDevider(SPI_CLOCK_DIV8),
Clock ini berasal dari master dan menggunakan kecepatan 8MHz. Clock speed ganti
menjadi 1. Bandingkan hasilnya dan apa yang terjadi
Jawab
:
Clock speed merupakan kecepatan prosesor yang
diukur dari banyaknya jumlah siklus yang bisa diukur setiap detik. Clock speed
memiliki parameter default yaitu 2, 4, 8, 16, 32, 64, 128. Jadi jika clock
speed semakin tinggi maka kinerja prosesor semakin bagus dan kecepatan
pengiriman data dari master ke slave akan semakin cepat pula. Jika nilai
parameter clock speed lebih dari 28 = 128 maka akan mengakibatkan
kinerja dari prosesor dalam arduino kurang bagus, atau bahkan listing program
tidak bisa di running.
7. Link Download [kembali]
- HTML >> klik disini
- Rangkaian Proteus >> klik disini
- Listing Program >> klik disini
- Library Arduino >> klik disini
- Video >> klik disini
- Flowchart >> klik disini
Tidak ada komentar:
Posting Komentar