LAPORAN AKHIR M3 (PERCOBAAN 2)
JURNAL[KEMBALI]
Melakukan Komunikasi secara SPI dimana ketika button master ditekan maka LED slave menyala dan ketika Button slave ditekan maka LED master akan menyala
HARDWARE[KEMBALI]
GAMBAR RANGKAIAAN[KEMBALI]
PRINSIP KERJA[KEMBALI]
- pada percobaan ini kita menggunakan 2 buah arduino, 2 pushbutton dan 2 buah led
- dimana kita menggunakan komunikasi SPI sehingga ketika pushbutton master ditekan led slave akan hidup dan ketika push button slave ditekan led master akan hidup
- untuk kodingan masternya seperti dibawah
//SPI MASTER (ARDUINO)
//SPI COMMUNICATION BETWEEN TWO ARDUINO
//CIRCUIT DIGEST
#include<SPI.h> //Library for SPI
#define LED 7
#define ipbutton 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(115200); //Starts Serial Communication at Baud Rate 115200
pinMode(ipbutton,INPUT); //Sets pin 2 as input
pinMode(LED,OUTPUT); //Sets pin 7 as Output
SPI.begin(); //Begins the SPI commnuication
SPI.setClockDivider(SPI_CLOCK_DIV8); //Sets clock for SPI communication at 8 (16/8=2Mhz)
digitalWrite(SS,HIGH); // Setting SlaveSelect as HIGH (So master doesnt connnect with slave)
}
void loop(void)
{
byte Mastersend,Mastereceive;
buttonvalue = digitalRead(ipbutton); //Reads the status of the pin 2
if(buttonvalue == HIGH) //Logic for Setting x value (To be sent to slave) depending upon input from pin 2
{
x = 1;
}
else
{
x = 0;
}
digitalWrite(SS, LOW); //Starts communication with Slave connected to master
Mastersend = x;
Mastereceive=SPI.transfer(Mastersend); //Send the mastersend value to slave also receives value from slave
if(Mastereceive == 1) //Logic for setting the LED output depending upon value received from slave
{
digitalWrite(LED,HIGH); //Sets pin 7 HIGH
Serial.println("Master LED ON");
}
else
{
digitalWrite(LED,LOW); //Sets pin 7 LOW
Serial.println("Master LED OFF");
}
delay(1000);
}
- disini kita mengunakan libarary spi
- kemudian mendeklarasikan pin yang digunakan oleh pushbutton dan led
- kemudaian mengatur clock yang digunakan karena komunikasi spi menggunakan clock untuk mengirim datanya
- kemudian ss diatur high agar master bisa mengirim data
- nilai 1 dikirim jika button tidak ditekan dan nilai nol jika button ditekan
- atur ss dengan logika low agar master menerima data
- jika data diterima 1 led hidup dan led mati jika lainnya
- untuk kodingan slavenya seperti dibawah
//SPI SLAVE (ARDUINO)
//SPI COMMUNICATION BETWEEN TWO ARDUINO
//CIRCUIT DIGEST
//Pramoth.T
#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()
{
Serial.begin(9600);
pinMode(buttonpin,INPUT); // Setting pin 2 as INPUT
pinMode(LEDpin,OUTPUT); // Setting pin 7 as OUTPUT
pinMode(MISO,OUTPUT); //Sets MISO as OUTPUT (Have to Send data to Master IN
SPCR |= _BV(SPE); //Turn on SPI in Slave Mode
received = false;
SPI.attachInterrupt(); //Interuupt ON is set for SPI commnucation
}
ISR (SPI_STC_vect) //Inerrrput routine function
{
Slavereceived = SPDR; // Value received from master if store in variable slavereceived
received = true; //Sets received as True
}
void loop()
{ if(received) //Logic to SET LED ON OR OFF depending upon the value recerived from master
{
if (Slavereceived==1)
{
digitalWrite(LEDpin,HIGH); //Sets pin 7 as HIGH LED ON
Serial.println("Slave LED ON");
}
else
{
digitalWrite(LEDpin,LOW); //Sets pin 7 as LOW LED OFF
Serial.println("Slave LED OFF");
}
buttonvalue = digitalRead(buttonpin); // Reads the status of the pin 2
if (buttonvalue == HIGH) //Logic to set the value of x to send to master
{
x=1;
}
else
{
x=0;
}
Slavesend=x;
SPDR = Slavesend; //Sends the x value to master via SPDR
delay(1000);
}
}
- pada kodingan slave ini kita medeklarasikan pin yang digunakan untuk led dan push button
- pin MISO di deklarasikan sebagai output
- kemudian untuk nilai yang diterima slave bernilai 1 maka led akan berlogika high dan hidup dan jika lainnya led akan berlogika low atau mati
- kemudian untuk peran mengirim maka ketika button dibernilai high maka akan mengirim nilai 1 kesisi master dimana akan membuat led master hidup dan jika lainnya nilai nol akan dikirim ke master dan led master akan mati
- kemudian nilai akan dikirim dengan slavesend dengan nilai x yang akan dikirim berdasarkan nilai x yang di permisalkan
VIDEO PRAKTIKUM[KEMBALI]
ANALISA[KEMBALI]
Percobaan 2
1) Analisa pengaruh "SPI.SetClockDivider(SPI_Clock_Div8);" apabila nilai 8 diganti dengan nilai lain!
jawab;
Ketika nilai Div dikecilkan maka kecepatan transmisi data akan meningkat dan jika Div dinaikan maka kecepatan transmiai berkurang ini karna Div merupakan nilai pembagi clock sehingga makin besar nilai pembaginya maka makin kecil nilai clocknya.
2) Analisa pengaruh menekan pushbutton dan nyala LED terhadap master dan slave!
jawab:
Ketika pushbutton pada master ditekan maka LED pada slave akan aktif dan ketika pushbutton slave ditekan maka LED master akan aktif ini dikarnakan adanya komunikasi SPI yang dilakukan oleh pin miso dan mosi, dengan pin ss yang mengatur apakah data itu dikirimkan atau diterima.
3) Analisa perbedaan rangkaian pada modul dan saat praktikum!
Jawab :
Rangkaian pada modul tidak memakai pin 10 dan saat percobaan memakai pin 10, jika tanpa menggunakan pin 10 maka ketika pushbutton ditekan yang akan hidup malah LED pada master ini dikarnakan pin 10 merupakan pin ss yang mengatur slave mana yang akan berkomunikasi dengan master.
4) Analisa pengaruh pin miso terhadap output yang dihasilkan!
Pin miso akan membuat LED pada slave hidup, ini dikarnakan pin miso diatur sebagai output pada program slave sehingga nilai yang dikirimkan oleh master akan dianggap sebagai input oleh slave yang kemudian outputnya berupa nyala/tidaknya LED.
LINK DOWNLOAD[KEMBALI]
Tidak ada komentar:
Posting Komentar