Tugas Pendahuluan 2
1. Kondisi
Percobaan 2 Kondisi 13
Buatlah rangkaian seperti gambar percobaan 1, ganti LED menjadi Buzzer tambahkan resistor sebelum Buzzer sebesar 1k ohm.
2. Gambar Rangkaian
3. Vidio
4. Prinsip kerja
Pada percobaan 2, terdapat beberapa komponen diantaranya 2 buah arduino (master dan slave), buah buzzer, 2 buah resistor dan 2 buah button, kedua aruino kita hubungkan dimana pada kaki pin 13 dihubungkan ke kaki pin 13 arduino lainnya (SCLK) , pada kaki pin 12 dihubungkan ke kaki pin 12 arduino lainnya (MISO) , pada kaki pin 11 dihubungkan ke kaki pin 11 arduino lainnya (MOSI), pada kaki pin 10 dihubungkan ke kaki pin 10 arduino lainnya (SS).
Pada saat program kita port, maka ketika button arduino pertama kita tekan , maka buzzer yang terhubung pada arduino kedua akan mati, begitu juga sebaliknya, dan apabila kedua button di tekan maka kedua buzzer akan mati.
Listing Program
//Master Arduino Code:
#include<SPI.h> //Library for SPI
#define LED 7
#define ipbutton 2
int buttonvalue;
int x;
void setup (void)
{
Serial.begin(9600); //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(200);
}
SLAVE
//Slave Arduino Code:
//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(200);
}
}
5. Link Download
Link HTML : Link Download
Link Simulasi Proteus : Link Download
Link Listing Program : Link Download
Link Video Simulasi : Link Download
Datasheet Arduino UNO : Link Download
Link Library : Link Download
Datasheet Button : Link Download
Komentar
Posting Komentar