b) Mengaplikasikan protokol komunikasi UART,SPI,dan I2C pada arduino
2. Alat dan Bahan[Back]
Alat dan bahan yang digunakan pada percobaan kedua yaitu
3. Rangkaian Simulasi[Back]
4. Prinsip Kerja Rangkaian[Back]
Pada percobaan 2 ini kita menggunakan 2 buah arduino, papan ramgkaian, LED, resistor, push button, dan jumper. Percobaan kali ini kita menggunakan komunikasi SPI. Untuk pin 13,12,11,10 itu saling terhubung antar arduino master dan slave. Pin 7 terhudung kepada LED dan Pin 2 ke push button, dan kondisi ini berlaku untuk master dan slave. Kemudian kita akan mengimputkan program ke masing2 arduino.Maka kita akan mendapatkan kondisi dimana ketika push button pada master di tekan maka LED slave yang menyala. Dan ketika push button pada slave ditekan maka LED master yang akan menyala
Programnya yaitu
MASTER
#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(100);
}
SLAVE
#include<SPI.h>
#define LEDpin 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()
{
Serial.begin(115200);
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);
}
}
5. Video Rangkaian[Back]
6. Analisa[Back]
1. Analisa pengaruh "SPI.setClockDivider(SPI_CLOCK_DIV8);" apabila nilai 8 diganti dengan nilai lain!
Jawab : Apabila angka 8 diganti dari salah satu master atau slave saja maka itu tidak bisa, karena program tersebut mengatur clock. Jadi clock dari master dan slave harus sama. Namun jika sama - sama diganti selain angka 8 itu boleh, seperti 1,2,4,16,32,64,sampai 256. Namun syaratnya master dan slave di program clock tersebut harus sama.
2. Analisa pengaruh menekan push button dan nyala LED terhadap master dan slave!
Jawab: Pada percobaan yang telah dilakukan ketika push button pada master ditekan maka LED yang menyala adalah LED pada slave. Kemudian ketika ditekan pushbutton pada slave maka LED yang menyala adalah LED pada master
3. Analisa perbedaan rangkaian pada modul dengan rangkaian saat praktikum!
Jawab : Perbedaannya yaitu pada saat praktikum ditambahkan jumper pada pin miso kemudian pada ground arduinonya tidak digunakan (yang antar arduino)
4. Analisa pengaruh pin MISO terhadap output yang dihasilkan!
Jawab : Pin MISO merupaka master sebagai inputan dan slave sabagai output. Jadi fungsinya mengirim data dari atau antara master dan slave. Jadi jika pin ini tidak dihubung maka arduino master tidak dapat mengirim data ke slave dan komunikasi tidak terjadi
Tidak ada komentar:
Posting Komentar