TP M3 P3




1. Kondisi [Kembali]

Percobaan 2 

Gantilah LED dengan buzzer

2. Gambar [Kembali]
 
 
 
3. Video simulasi [Kembali]  




4. Prinsip kerja rangkaian [Kembali]
 

Pada percobaan ini kita menggunakan beberapa komponen yaitu ada 2 buah arduino (master dan slave), ada 4 buah resistor, 2 buah led, 2buah button, 2 buah power dan 2 buah ground. Pada rangkaian ini, pin 13, 12, 11, dan 10 arduino master masing masing dihubungkan dengan pin yang sama pada arduino slave. Dimana pin 13 ini adalah clk, pin 12 adalah MISO (master input slave output), pin 11 adalah MOSI (master output slave input) dan pin 10 adalah SS (slave select) digunakan untuk memilih slave mana yang akan dikirimkan data oleh master.  Lalu pin 7 master dihubungkan dengan resistor 1 dan LED 1, selanjutnya pin 2 dihubungkan dengan button dan resistor 2, dimana pin 2 ini digunakan sebagai input yang nantinya data yang masuk ke pin 2 yang berasal dari button akan dikirimkan ke arduino slave dan arduino slave akan mendeteksi dan mengerjakan perintah sesuai dengan program yang diinput pada slave. Begitu juga dengan pin 7 slave dihubungkan dengan resistor 3 dan LED 2, selanjutnya pin 2 dihubungkan dengan button dan resistor 4, dimana pin 2 ini digunakan sebagai input yang nantinya data yang masuk ke pin 2 ini akan dikirimkan ke arduino master dan arduino master akan mendeteksi dan mengerjakan perintah sesuai dengan program yang diinput pada master

listing program master
#include<SPI.h>                        
#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
  digitalWrite(SS,HIGH);//Setting SlaveSelect as HIGH
}
 
void loop(void)
{
  byte Mastersend,Mastereceive;          
  buttonvalue = digitalRead(ipbutton);  //Reads the status of the pin 2
  if(buttonvalue == HIGH)//Logic for Setting x value 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);
  if(Mastereceive == 1)    
    digitalWrite(LED,HIGH); //Sets pin 7 HIGH
    Serial.println("Master LED ON");
  }
  else
  {
   digitalWrite(LED,LOW);            
   Serial.println("Master LED OFF");
     delay (100);
  }
}


Untuk prinsip kerja dari master yaitu pertama tama include library untuk SPI, lalu deklarasikan pin 7 dan pin 2 masing masing untuk LED dan button, selanjutnya ada variable buttonvalue dan x dengan tipe data integer. Lalu ada fungsi void setup dimana pada fungsi ini semua kode akan dieksekusi sekali, lalu ada Serial.begin (115200) digunakan untuk mengatur kecepatan pengiriman data menggunakan port serial. Dalam fungsi void setup ini kita akan menetapkan atau mendeklarasikan pin 2(button) sebagai input dan pin 7(LED) sebagai output. Lalu untuk memulai komunikasi SPI  kita perlu menuliskan syntaks SPI.begin dan selanjutnya kita mengatur clockdivider untuk komunikasi SPI, disini kita menggunakan pembagi 8. Lalu kita mengatur SS (slave select) dalam logika HIGH sehingga master tidak akan terhubung dengan slave.

Selanjutnya ada fungsi void loop dimana pada fungsi ini semua kode akan dijalankan secara berulang, lalu dalam fungsi ini terdapat butonvalue yang mana button akan membaca nilai yang terdapat pada pin 2. Lalu jika button mendeteksi nilai logika high maka x=1 sedangkan jika terdeteksi nilai selain high maka nilai x=0, selanjutnya untuk memulai komunikasi antara slave dan master kita perlu menuliskan syntaks digitalWrite (SS, LOW), Lalu ada syntaks Mastereceive =SPI.transfer(Mastersend) yang mana syntaks ini berguna untuk mengirimkan nilai push button yang disimpan dalam variable Mastersend ke slave arduino dan juga menerima nilai dari slave dan disimpan dalam variable Mastereceive. Selanjutnya kita akan mengatur  LED dalam kondisi hidup atau mati. pada program ini jika mastereceice nilai nya 1 maka led akan menyala sedangkan jika mastereceive mendeteksi nilai selain 1 maka led tidak akan menyala.

listing program 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;
  received = true;       //Sets received as True
}
 
void loop()
{
   if(received) //Logic to SET LED ON OR OFF
   {
      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(100) ;
  }
}

Untuk prinsip kerja dari master yaitu pertama tama include library untuk SPI, lalu deklarasikan pin 7 dan pin 2 masing masing untuk LED dan button, selanjutnya ada variable buttonvalue dan x dengan tipe data integer. Lalu ada fungsi void setup dimana pada fungsi ini semua kode akan dieksekusi sekali, lalu ada Serial.begin (115200) digunakan untuk mengatur kecepatan pengiriman data menggunakan port serial. Dalam fungsi void setup ini kita akan menetapkan atau mendeklarasikan pin 2(button) sebagai input dan pin 7(LED) sebagai output  dan syntaks yang paling penting yaitu mengatur MISO sebagai output karena disini kita akan mengirim data dari slave ke master. Selanjutnya nyalakan SPI dalam mode slave menggunakan SPI control register. Kemudian aktifkan interupsi untuk komunikasi SPI, jika data diterima dari master maka interrupt routine akan dipanggil dan data akan diambil dari SPDR dan disimpan dalam variable slavereceive

Selanjutnya ada fungsi void loop dimana pada fungsi ini semua kode akan dijalankan secara berulang, lalu dalam fungsi ini kita akan mengatur led dalam kondisi hidup atau mati tergantung nilai yang diterima pada slave. Jika nilai yang diterima pada slave =1 maka led akan menyala  sedangkan jika nilai yang diterima selain 1 maka led akan mati. Selanjutnya button akan membaca nilai yang terdapat pada pin 2. Lalu jika button mendeteksi nilai logika high maka x=1 sedangkan jika terdeteksi nilai selain high maka nilai x=0. Nilai x ini akan dikirimkan oleh slave ke master melalui spdr.


5. Link download [Kembali]

Tidak ada komentar:

Posting Komentar

  Bahan Presentasi untuk Mata Kuliah ELEKTRONIKA 2020/2021 OLEH: Muhammad zikra 2010952052 Dosen Pengampu: Darwison, M.T Referensi: