Percobaan 2 Komunikasi SPI
1. Alat dan Bahan [Kembali]
2. Rangkaian [Kembali]
3. Prinsip Kerja Rangkaian [Kembali]
Prinsip Kerja dari rangkaian tersebut adalah rangkaian yang disusun terdiri dari 2 buah Arduino, lalu untuk outputan dari pin 2 dihubungkan ke button, kaki 7 dihubungkan ke kaki LED begitu pula pada bagian Arduino Slave. Untuk pin 13 12 11 sendiri saling dihubungkan karena pada pin tersebut kita gunakan sebagai data transfer antar mikroprosesor, dimana ada pin MOSI, pin MISO dan pin SCLK yang saling terhubung. untuk sinyal Clock sendiri digunakan untuk sinkronisasi antar arduino.
MASTER
#include<SPI.h>
#define led 7
#define button 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(115200); //Starts Serial Communication at Baud Rate 115200
pinMode(button,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(button); //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 Buzzer ON");
}
else
{
digitalWrite(led,LOW);
Serial.println("Master led OFF");
}
}
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 Buzzer 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 Buzzer ON");
}
else
{
digitalWrite(ledpin,LOW); //Sets pin 7 as LOW LED OFF
Serial.println("Slave Buzzer 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
}
}
5. Video Percobaan
[Kembali]
6. Analisa [Kembali]
1. Analisa pengaruh push button pada rangkaian percobaan 2
Jawab :
Push button berfungsi sebagai trigger yang akan mengaktifkan arduino master untuk memanggil slaves arduino. Lalu, slave arduino pada startup push button, maka slave akan mengirimkan data ke master, kemudian data tersebut diolah oleh master untuk menghasilkan output berupa LED pada rangkaian tersebut.
2. Analisa prinsip kerja UART pada percobaan 1
Jawab :
Pada rangkaian dipasang 2 arduino yang dimana satu sebagai master dan satu lagi sebagai slave. Arduino sebagai master maksudnya bahwa arduino tersebut akan memberi perintah lalu menerima dan mengolah data dari slave arduino hingga keluar output. Pin 10, 11, 12, dan 13 yang saling dihubungkan untuk mendukung agar lancar komunikasi SPI dengan library SPI yang diinputkan pada Arduino IDE yang dipasang pada masing-masing arduino dengan listing yang disesuaikan.
7. Link Download
[Kembali]
Download file HTML [disini]
Download file video percobaan [disini]
Download listing program master [disini]
Download listing program slave [disini]
Tidak ada komentar:
Posting Komentar