TP 2 M3



Tugas Pendahuluan (Percobaan 2 Kondisi 3)

Modul 3

 1. Kondisi[Kembali]

Percobaan 2 Kondisi 3

Ubah baud rate pada Master menjadi 34500

2. Rangkaian Simulasi[Kembali]












4. Listing Program[Kembali]

-----------------------------------------------------------------------------------------------------------
//MASTER
 
#include<SPI.h>                        
#define buzzer 7          
#define button 2
 
int buttonvalue;
int x;
 
void setup (void)
{
  Serial.begin(115200);                   //Starts Serial Communication at Baud Rate 115200
  pinMode(button,INPUT);                  //Sets pin 2 as input
  pinMode(buzzer,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(button);  //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);            
   Serial.println("Master Buzzer OFF");
  }
}
 
//SLAVE
 
#include <SPI.h>
#define buzzerpin 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(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 Buzzer ON OR OFF depending upon the value recerived from master
   {
      if (Slavereceived==1)
      {
        digitalWrite(buzzerpin,HIGH);         //Sets pin 7 as HIGH LED ON
        Serial.println("Slave Buzzer ON");
      }
      else
      {
        digitalWrite(buzzerpin,LOW);          //Sets pin 7 as LOW LED 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
   }
}
-----------------------------------------------------------------------------------------------------------

5. Video[Kembali]









6. Prinsip Kerja [Kembali]

Pada rangkaian ini kita merangkai sebuah rangkaian dimana menggunakan sebuah arduino uno sebagai Mikrokontroler untk mengnedalikan LED output.Namun pada master diberikan baud rate sebesar 34500  Selanjutnya untuk output yaitu LED dihubungkan pada 7 pada master dan slave arduino yang nantinya akan hidup ketika button ditekan. Untuk menjalankannya sendiri pertama program arduino dibagi menjadi dua yaitu master dan slave.

Pada program master sendiri pertama-tama kita melakukan include untuk memasukkan library SPI. Kemudian define terhadap button pada pin 2 dan buzzer pada pin 7. Setelah itu melakukan deklarasi jika buttonvalue dan x sebagai integer. Kemudian pada setup dideklarasikan untuk button dan buzzer sebagai INPUT dan OUTPUT dengan  baud rate 34500. Setelah itu melakukan SPI begin dengan set clock divider SPI_CLOCK_DIV8. Kemudian dengan menampilkan SS sebagai HIGH

Kemudian pada loop mastersend dan mastereceive sebagai byte. Dengan buttonvalue membaca button. Jika buttonvalue bernilai high maka x = 1 sedangkan selain itu maka x = 0 . Hal ini sama halnya dengan slave



7. Link Download[Kembali]



File Percobaan Proteus Klik disini

File Program Master Arduino Klik disini

File Program Slave Arduino Klik disini

Video Simulasi Klik disini

Library Arduino Klik disini

Datasheet Arduino Klik disini

Download Datasheet LCD Klik disini 

No comments:

Post a Comment

      PRAKTIKUM MIKROKONTROLER & MIKROPROSESOR TAHUN 2022     Muhammad Farhan Mendra   2010952014             JURUSAN TEKNIK ELEKTRO FAK...