Electricity Lightning

Laporan Akhir 2

 




1. Hardware [Back]
LED
Jumper
Arduino 

Resistor

Breadboard
Push Button
2. Rangkaian Simulasi [Back]
3. Listing Program[Back]
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 OF
        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);
}
}
4. Kondisi[Back]
Pada saat rangkaian dijalankan apabila pushbutton pada slave ditekan maka LED pada Master akan aktif, begitupun sebaliknya apabila pushbutton master ditekan maka LED Slave akan aktif
5. Video Rangkaian[Back]
    Pada percobaan ini kita menggunakan 2 arduino yang terhubung secara komunikasi SPI yaitu pada pin 10(SS), 11(MOSI), 12(MISO), 13(SCK) yang saling terhubung antara arduino 1 dan 2 menjadi saluran komunikasi pada arduino. lalu pushbutton terhubung pada pin 2 dan led pada pin 7 pada masing masing arduino. 
    Pada listing program arduino master pada void setup dideklariasikan mulainya serial komunikasi dengan baudrate 115200, push button sebagai input, led sebagai output, dan set clock untuk komunikasi SPI di 8 artinya 2Mhz, dan SS high untuk memutuskan komunikasi ke master. Pada void loop dideklarasikan digitalread untuk push button, jika push button ditekan maka akan mengirim data ke slave. Untuk mengirimkan data maka dideklarasikan SS LOW. Jika data yang diterima dari slave = 1 maka LED aktif jika tidak maka LED off.
    Pada listing program slave pada void setup dideklarasikan mulainya serial komunikasi dengan baudrate 115200, push button sebagai input, led sebagai output, MISO sebagai output. Pada void loop apabila data yang diterima dari master = 1 maka LED aktif dan jika tidak sama dengan 1 maka LED mati. Lalu ada digitalread button untuk membaca pushbutton jika push button high maka akan mengirim data 1 dan apabila low akan mengirim 0. Lalu deklarasikan slavesend = x dan SPDR = Slave artinya mengirim data lewat SPDR.
6. Analisa[Back] 
1. Analisa pengaruh "SPI.setClockDivider(SPI_CLOCK_DIV8);" apabila nilai 8 diganti dengan nilai lain!
Jawab : Apabila angka 8 diganti maka itu boleh saja dilakukan untuk angka selain 8 itu ada 2,4,16,32,64,128,256. Namun yang harus diperhatikan itu adalah rentang DIV itu berpengaruh terhadap besar frekuensi dari Clock semakin besar DIV maka frekuensi semakin kecil
2. Analisa pengaruh menekan push button dan nyala LED terhadap master dan slave!
Jawab : Pada percobaan apabila kita menekan push button pada master maka yang hidup adalah LED pada slave begitupun sebaliknya jika kita menekan push button slave maka yang hidup adalah LED master.
3. Analisa perbedaan rangkaian pada modul dengan saat praktikum!
Jawab :Saat praktikum ditambahkan jumper pada pin SS dan juga pin ground tidak dihubungkan antar arduino. Pin SS sebagai jalur komunikasi antar arduino.
4. Analisa Pengaruh pin MISO terhadap output yang dihasilkan!
Jawab : Pin MISO berfungsi sebagai pengirim data antar arduino sehingga data pada master dapat diterima oleh Slave apabila tidak ada miso  maka data yang dimaster hanya akan jalan dimaster dan slave tidak akan ada pengaruhnya.

7. Link Download[Back]

Download HTML [disini]
Download Video [disini]
Download library arduino [disini]
Download Datasheet Arduino [disini]
Download Datasheet Resistor [disini]
Download Datasheet LED [disini]
Download Datasheet PushButton [disini]

Tidak ada komentar:

Posting Komentar