Laporan Akhir 2 Modul 3






1. Komponen [KEMBALI]

1. Arduino Uno




2. Resistor




3. Transistor




4. Buzzer




5. Button
 

 2. Rangkaian Simulasi [KEMBALI]



  • //Master
  • //Slave






//Master

#include<SPI.h>                            
#define buzz 7           
#define ipbutton 2
int buttonvalue;
int x;
void setup (void)

{
  Serial.begin(115200);                   
  
  pinMode(ipbutton,INPUT_PULLUP);                 
  pinMode(buzz,OUTPUT);                   
  
  SPI.begin();                            
  SPI.setClockDivider(SPI_CLOCK_DIV4);    
  digitalWrite(SS,HIGH);                
}

void loop(void)
{
  byte Mastersend,Mastereceive;          

  buttonvalue = digitalRead(ipbutton);  

  if(buttonvalue == LOW)               
  {
    x = 1;
  }
  else
  {
    x = 0;
  }
  
  digitalWrite(SS, LOW);                 
  
  Mastersend = x;                            
  Mastereceive=SPI.transfer(Mastersend); 
  
  if(Mastereceive == 1)                   
  {
    digitalWrite(buzz,HIGH);             
    Serial.println("Master Buzz ON");
    delay(1000);
  }
  else
  {
   digitalWrite(buzz,LOW);          

  }
  delay(1000);
}


// Slave

#include<SPI.h>
#define buzz 7
#define buttonpin 2
volatile boolean received;
volatile byte Slavereceived,Slavesend;
int buttonvalue;
int x;
void setup()

{
  Serial.begin(115200);
  
  pinMode(buttonpin,INPUT_PULLUP);              
  pinMode(buzz,OUTPUT);                
  pinMode(MISO,OUTPUT);                  

  SPCR |= _BV(SPE);                     
  received = false;

  SPI.attachInterrupt();                 
  
}

ISR (SPI_STC_vect)                       
{
  Slavereceived = SPDR;        
  received = true;                       
}

void loop()
{ if(received)                           
   {
      if (Slavereceived==1) 
      {
        digitalWrite(buzz,HIGH);        
        Serial.println("Slave buzz ON");
        delay(1000);
      }else
      {
        digitalWrite(buzz,LOW);       
       Serial.println("Slave buzz OFF");
      }
      
      buttonvalue = digitalRead(buttonpin);
      
      if (buttonvalue == LOW)             
      {
        x=1;
        
      }else
      {
        x=0;
      }
      
  Slavesend = x;                             
  SPDR = Slavesend;                          
  delay(1000);
}
}

6. Analisa [KEMBALI]

1.     Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI

Jawab:

            Komunikasi yang dimiliki oleh SPI berjenis full duplex, karna Slave dapat mengirimkan data ke Master bersamaan saat Master mengirim data ke Slave. Dan dari teori yang kita ketahui, SPI memiliki 4 jalur, yaitu MISO, MOSI, SS, dan SCK. Untuk timing diagram transmisi data SPI dapat dilihat pada gambar dibawah.

 


2.     Bagaimana cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave

Jawab:

            Cara menghubungkan rangkaian SPI yang memiliki lebih dari satu Slave, yaitu dihubungkan secara parallel. Dan untuk memilih Slave yang akan digunakan oleh Master, akan digunkan jalur SS (Slave Select). Untuk lebih jelas dapat dilihat pada gambar dibawah.

 


  • File HTML                                Download
  • File Rangkaian Simulasi           Download
  • Listing Program Master            Download
  • Listing Program Slave              Download
  • Flowchart                                  Download
  • Video Simulasi                          Download

Tidak ada komentar:

Posting Komentar