Tugas Pendahuluan 2

Tugas Pendahuluan 2

"Percobaan 2 Kondisi 6"



  • Tambahkan resistor sebelum LED sebesar 1k Ohm


2. Gambar Rangkaian Simulasi [Kembali]


  • Rangkaian Percobaan 2 Kondisi 6


Saat Button LOW




Saat Button Master HIGH




Saat Button Slave HIGH





3. Listing Program [Kembali]


// MASTER PROGRAM
#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 PROGRAM


#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);
        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(100);
}
}





4. Video Simulasi [Kembali]


  • Video Simulasi Percobaan 2 Kondisi 6








4. Prinsip Kerja Rangkaian [Kembali]


  • Prinsip Kerja Rangkaian Percobaan 2 Kondisi 6

Pada Percobaan 2 Kondisi 6 yaitu Arduino 1 ditentukan sebagai master dan arduino 2 yang bertindak sebagai slave. Master dan slave ini dihubungkan melalui kaki pin 10 master ke kaki pin 10 slave sebagai SS,  pin 11 master ke kaki pin 11 slave sebagai MOSI, pin 12 master ke kaki pin 12 slave sebagai MISO, dan pin 13 master ke kaki pin 13 slave sebagai SCK. pin 2 (push button) sebagai input dan pin 7 sebagai output pada masing masing arduino. Ketika input button berlogika HIGH maka akan ada keluaran di pin MOSI ke slave sehingga LED pada slave menyala. sedangkan ketika input button pada slave  logika HIGH maka akan ada keluaran di pin MISO akibatnya LED pada Master menyala.




5. Link Download [Kembali]

File HTML [download]
File Library Arduino Uno V.2 [download]
File Datasheet Arduino Uno [download]
File Datasheet Resistor [download]
File Datasheet LED [download]
File Gambar Rangkaian  [download]
File Video Rangkaian [download]
File Rangkaian Percobaan 2 Kondisi 6 [download]
File Program Percobaan 2 Kondisi 6 [download]