LAPORAN AKHIR I


1. Komponen [kembali]

arduino




LED



power supply


Buzzer



2. Rangkaian Simulasi [kembali]

Prinsip kerja:

Kondisi: Tambahkan Buzzer sebagai input. Sehingga input yang tersedia adalah LED dan Buzzer (percobaan 2). Pada percobaan, komponen yang digunakan terdiri dari dua buah arduino yang berperan sebagai master dan slave, lalu ada buzzer dan led. Pada rangkaian ini digunakan komunikasi full duplex karena kedua output akan hidup secara bersamaan. Pada listing program, arduino master diberikan input berupa led dan buzzer dengan kecepatan SPI 2Mhz, pada program diberikan kondisi dimana jika dibaca high maka x akan 1 lalu jika tidak maka x akan 2, jika kondisi master 1, maka akan membuat led on dan slave akan terhubung. Namun, jika kondisinya berbeda maka led off.


3. Flowchart [kembali]



4. Listing Program [kembali]

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

#define LED 7          

#define button 2

#define buzzer 4

int buttonvalue;

int x;

void setup ()

 

{

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

 

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

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

  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()

{

  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;

  }

 

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

    Serial.println("Master LED ON");

    digitalWrite(buzzer, HIGH);

    Serial.println("  ");

    delay(5000);

  }

  else

  {

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

   Serial.println("Master LED OFF");

   digitalWrite(buzzer, LOW);

   Serial.println("Master buzzeR OFF");

  }

delay(50); 

 

}


// SLAVE PROGRAM

 

 

#include<SPI.h>

#define LEDpin 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(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);

        Serial.println("Slave LED ON");

      }else

      {

        digitalWrite(LEDpin,LOW);          //Sets pin 7 as LOW LED OFF

        Serial.println("Slave LED OFF");

      }

     

      buttonvalue = digitalRead(  in);  // 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(500);

}

}


5. Video [kembali]



6. Kondisi [kembali]

Percobaan 2

1. Apakah komunikasi yang digunakan simple, half, dan fullduplex

Jawab:

Pada percobaan yang tekah dilakukan, metode komunikasi yang digunakan adalah full duplex karena ada 2 output yang aktif dengan waktu yang bersamaan. Hal ini dikarenakan pada full duplex kedua belah pihak (arduino) akan saling berbagi informasi dalam waktu yang sama.

2. Jika serial pada slave akan diubah menjadi 9600 dan yang dimaster tetap maka apa yang terjadi pada program

Jawab:

Pada percobaan, jika serial begin diubah maka tidak ada perubahan yang terjadi pada output yang dihasilkan. Dikarenakan nilai serial begin digunakan untuk menyatakan kecepatan data yang dikirim.

3. Jelaskan fungsi clock soeed atau clock devider pada percobaan, jika diubah ke 16 maka apa yang terjadi

Jawab:

Pada percobaan, clock speed dan clock devider digunakan untuk menyatakan instruksi dan kalkulasi tingkat rendah. Jika nilainya diubah ke 16 maka kecepatan data akan semakin cepat.

 

7. Link Download [kembali]

HTML: disini

File rangkaian: disini

Listing program: disini

Librabry Arduino: disini

Datasheet buzzer: disini 

Datasheet LED: disini

Video: disini


Tidak ada komentar:

Posting Komentar