LA M3 P2

b) Mengaplikasikan protokol komunikasi UART,SPI,dan I2C pada arduino


2. Alat dan Bahan[Back]

Alat dan bahan yang digunakan pada percobaan kedua yaitu


a) LED





b)Arduino



c) Papan Rangkaian


d)Push button




e) Resistor 

 f) Jumper




3. Rangkaian Simulasi[Back]





4. Prinsip Kerja Rangkaian[Back]

Pada percobaan 2 ini kita menggunakan 2 buah arduino, papan ramgkaian, LED, resistor, push button, dan jumper. Percobaan kali ini kita menggunakan komunikasi SPI. Untuk pin 13,12,11,10 itu saling terhubung antar arduino master dan slave. Pin 7 terhudung kepada LED dan Pin 2 ke push button, dan kondisi ini berlaku untuk master dan slave. Kemudian kita akan mengimputkan program ke masing2 arduino.Maka kita akan mendapatkan kondisi dimana ketika push button pada master di tekan maka LED slave yang menyala. Dan ketika push button pada slave ditekan maka LED master yang akan menyala

Programnya yaitu 
        MASTER
#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 
#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);         //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(1000);

}

}
   
5. Video Rangkaian[Back]








6. Analisa[Back]


1. Analisa pengaruh "SPI.setClockDivider(SPI_CLOCK_DIV8);" apabila nilai 8 diganti dengan nilai lain!
Jawab : Apabila angka 8 diganti dari salah satu master atau slave saja maka itu tidak bisa, karena program tersebut mengatur clock. Jadi clock dari master dan slave harus sama. Namun jika sama - sama diganti selain angka 8 itu boleh, seperti 1,2,4,16,32,64,sampai 256. Namun syaratnya master dan slave di program clock tersebut harus sama.
  
2. Analisa pengaruh menekan push button dan nyala LED terhadap master dan slave!
Jawab: Pada percobaan yang telah dilakukan ketika push button pada master ditekan maka LED yang menyala adalah LED pada slave. Kemudian ketika ditekan pushbutton pada slave maka LED yang menyala adalah LED pada master

3. Analisa perbedaan rangkaian pada modul dengan rangkaian saat praktikum!
Jawab : Perbedaannya yaitu pada saat praktikum  ditambahkan jumper pada pin miso kemudian pada ground arduinonya tidak digunakan (yang antar arduino)

4. Analisa pengaruh pin MISO terhadap output yang dihasilkan!
Jawab : Pin MISO merupaka master sebagai inputan dan slave sabagai output. Jadi fungsinya mengirim data dari atau antara master dan slave. Jadi jika pin ini tidak dihubung maka arduino master tidak dapat mengirim data ke slave dan komunikasi tidak terjadi

7. Link Download[Back]

Download HTML  disini
Download Video Rangkaian disini  
Download datasheet LED disini
Download  datasheet arduino disini
Download datasheet resistor disini
Download datasheet push button disini

Tidak ada komentar:

Posting Komentar

BAHAN PRESENTASI UNTUK MATA KULIAH ELEKTRONIKA 2020/2021 OLEH: Naura Nabila Putri Permata 2010951040 Dosen Pengampu: Darwison, M.T Referensi...