Tugas Pendahuluan 2



1. Kondisi
[Kembali]

     Percobaan 2 Kondisi 13

Ganti LED menjadi Buzzer, Tambahkan resistor sebelum Buzzer sebesar 1k ohm.
 
2. Gambar Rangkaian Simulasi [Kembali]


3. Video Simulasi [Kembali]

4. Prinsip Kerja Rangkaian [Kembali]

Pada rangkaian ini menggunakan 2 buah Simulino Uno, resistor, serta buzzer. Pin 11, 12, dan 13 master dihubungkan ke pin 11, 12, dan 13 slave. Kemudian pin 7 masing-masing arduino dihubungkan ke buzzer yang sebelumnya sudah diberi resistor 1k. Kemudian buzzer dihubunkan ke button lalu ke pin 2. Selain itu pin 2 juga dihubungkan ke resistor 1k yang dihubungkan ke power.

//MASTER

#include<SPI.h>                             //Library for SPI 


#define buzzer 7           


#define ipbutton 2


int buttonvalue;


int x;


void setup (void)



{


  Serial.begin(9600);                   //Starts Serial Communication at Baud Rate 115200 


  


  pinMode(ipbutton,INPUT);                //Sets pin 2 as input 


  pinMode(buzzer,OUTPUT);                    //Sets pin 7 as Output


  


  SPI.begin();                            //Begins the SPI commnuication


  SPI.setClockDivider(SPI_CLOCK_DIV32);    //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(buzzer,HIGH);              //Sets pin 7 HIGH


    Serial.println("Master buzzer ON");


  }


  else


  {


   digitalWrite(buzzer,LOW);               //Sets pin 7 LOW


   Serial.println("Master buzzer OFF");


  }


  delay(1000);


}

Pada listing program master, deklarasikan pin 7 terhubung ke buzzer dan pin 2 terhubung ke button. Kemudian deklarasikan juga variabel buttonvalue dan x. Pada void setup yang hanya dibaca sekali, deklarasikan button sebagai input dan buzzer sebagai output. Lalu nyatakan untuk memulai SPI dan set clock untuk SPI. Kemudian setting SlaveSelect dalam keadaan HIGH. Pada void loop yang dibaca berulang, deklarasikan variabel mastersend dan mastereceive.  Deklarasikan variabel buttonvalue dengan hasil pembacaan kondisi button. Kemudian deklarasikan kondisi dengan menggunakan if. Apabila nilai button HIGH, maka x=1 dan pada kondisi lainnya x=0.  Kemudian setting SlaveSelect dalam keaadaan Low dan nyatakan variabel mastersend sebagai x dan mastereceive dengan transfer data dari mastersend. Kemudian deklarasikan kondisi dengan menggunakan if. Apabila mastereceive=1, maka buzzer akan menyala dan pada kondisi lainnya buzzer akan LOW atau tidak berbunyi.

//SPI SLAVE (ARDUINO)


//SPI COMMUNICATION BETWEEN TWO ARDUINO 


//CIRCUIT DIGEST


//Pramoth.T



#include<SPI.h>


#define buzzerpin 7


#define buttonpin 2


volatile boolean received;


volatile byte Slavereceived,Slavesend;


int buttonvalue;


int x;


void setup()



{


  Serial.begin(9600);


  


  pinMode(buttonpin,INPUT);               // Setting pin 2 as INPUT


  pinMode(buzzerpin,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(buzzerpin,HIGH);         //Sets pin 7 as HIGH BUZZER ON


        Serial.println("SlaveBUZZER ON");


      }else


      {


        digitalWrite(buzzerpin,LOW);          //Sets pin 7 as LOW BUZZER OFF


        Serial.println("Slave BUZZER 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);


}


}

Pada listing program slave, deklarasikan library SPI.h, pin 7 dihubungkan ke buzzer, pin 2 dihubungkan ke button. Lalu deklarasikan juga boolean volatile dan byte, serta deklarasikan variabel buttonvalue dan x. Kemudian pada void setup yang hanya dibaca sekali, deklarasikan button sebagai input, buzzer dan MISO sebagai output. Setelah itu hidupkan mode slave pada SPI. Pada void loop yang dibaca berulang, deklarasikan kondisi slavereceived dengan menggunakan if. Apabila slavereceived=1, maka outputnya akan HIGH atau buzzer menyala. Untuk keadaan lainnya outputnya LOW atau buzzer tidak menyala. Lalu deklarasikan juga kondisi buttonvalue dengan menggunakan if. Apabila buttonvalue HIGH, maka x=1. Untuk keadaan lainnya x=0. Lalu nyatakan slavesend=x dan SPDR = Slavesend untuk mengirim x ke master melalui SPDR.

5. Link Download [Kembali]

          Program Arduino master

 


 

 

 

Tidak ada komentar:

Posting Komentar

  Bahan Presentasi untuk Mata Kuliah Kimia 2020         OLEH: Apriliya Rahmi Putri 2010953019     Dosen Pengampu : D...