Lapiran Akhir 1



 

Laporan Akhir Percobaan 2

 

1. Komponen [kembali]

    1. Arduino Uno




2. Resistor




3. Transistor




4. Buzzer




5. Button

 

 

2. Rangkaian [kembali]

 


3. Flowchart [kembali]

 


4. Listing Program [kembali]

//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);

}

}

 

5. Video Simulasi [kembali]

 


6. Analisa [kembali]

1.     Dari program yang dijalankan, apakah melakukan komunikasi simplex, half duplex atau full duplex? (analisa dari mana ke mana? Apakah master ke slave? Dan sebagainya? Jelaskan)

Jawab :

   Pada SPI memiliki 3 jalur komunikasi yaitu MOSI, MISO, dan CLK. Apabila kita memilih salah satu jalur komunikasi yang kita deklarasikan ke arduino, maka komunikasi tersebut akan memberikan informasi secara dua arah tetapi data tersebut sampai secara tidak bersamaan. Dari percobaan diatas didapatkan bahwa komunikasi yang digunakan yaitu half duplex, jadi proses transfer data itu secara dua arah, yang pertama dari master ke slave, lalu data tersebut di proses terlebih dahulu, setelah itu data ini akan ditransfer dari slave ke master.

 

2.     Jika serial begin (115200) di master diganti menjadi 9600 dan di slave tetap apa yang akan terjadi? Dan sebaliknya?

Jawab :

Tidak ada perubahan yang terjadi pada rangkaian, rangkaian tetap bisa berjalan, dan pada listing program pun bisa di running. Hal ini disebabkan karena serial begin berfungsi mengatur baudrate / kecepatan transmisi data antar Arduino. Jadi jikapun antara slave dan master berbeda serial.beginnya maka hanya berpengaruh pada kecepatan transmisi datanya saja, sedangkan program ataupun rangkaian tetap bisa berjalan.

 

3.     SPI_setClockDevider(SPI_CLOCK_DIV8), Clock ini berasal dari master dan menggunakan kecepatan 8MHz. Clock speed ganti menjadi 1. Bandingkan hasilnya dan apa yang terjadi

Jawab :

   Clock speed merupakan kecepatan prosesor yang diukur dari banyaknya jumlah siklus yang bisa diukur setiap detik. Clock speed memiliki parameter default yaitu 2, 4, 8, 16, 32, 64, 128. Jadi jika clock speed semakin tinggi maka kinerja prosesor semakin bagus dan kecepatan pengiriman data dari master ke slave akan semakin cepat pula. Jika nilai parameter clock speed lebih dari 28 = 128 maka akan mengakibatkan kinerja dari prosesor dalam arduino kurang bagus, atau bahkan listing program tidak bisa di running.

 

7. Link Download [kembali]

Tidak ada komentar:

Posting Komentar