Laporan Akhir 2

Laporan Akhir 2
Percobaan 2 Modul 3





1. Alat dan bahan [Kembali]
1. Arduino

Arduino merupakan sebuah perangkat elektronik yang bersifat open source dan sering digunakan untuk merancang dan membuat perangkat elektronik serta software yang mudah untuk digunakan. Arduino ini dirancang sedemikian rupa untuk mempermudah penggunaan perangkat elektronik di berbagai bidang.

Arduino ini memiliki beberapa komponen penting di dalamnya, seperti pin, mikrokontroler, dan konektor yang nanti akan dibahas lebih dalam selanjutnya. Selain itu, Arduino juga sudah menggunakan bahasa pemrograman Arduino Language yang sedikit mirip dengan bahasa pemrograman C++. 

2. Potensiometer 


Potensiometer adalah salah satu jenis resistor tiga terminal yang berfungsi untuk mengatur tegangan, arus dan resistensi listrik dalam sebuah rangkaian. Rangkaian potensiometer umumnya dibuat dengan menggunakan tiga komponen dasar, yakni elemen resistif, penyapu (wiper), dan terminal.

Elemen resistif sendiri bentuknya dibuat menjadi jalur melingkar. Terbuat juga dari bahan yang sifatnya resistif, biasanya grafit, plastik partikel karbon, kawat resistansi.

Cara kerja potensiometer adalah dengan mengendalikan besar hambatan atau resistansi pada sebuah rangkaian elektronika. Semakin besar hambatan yang diterima, maka besar tegangan yang dikeluarkan semakin kecil. Begitu pun sebaliknya.

3. Resistor


Resistor merupakan komponen penting dan sering dijumpai dalam sirkuit Elektronik. Boleh dikatakan hampir setiap sirkuit Elektronik pasti ada Resistor. Tetapi banyak diantara kita yang bekerja di perusahaan perakitan Elektronik maupun yang menggunakan peralatan Elektronik tersebut tidak mengetahui cara membaca kode warna ataupun kode angka yang ada ditubuh Resistor itu sendiri.

4. Push Button

 

Push Button Adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik dengan sistem kerja tekan unlock (tidak mengunci). Sistem kerja unlock disini berarti saklar akan bekerja sebagai device penghubung atau pemutus aliran arus listrik saat tombol ditekan, dan saat tombol tidak ditekan (dilepas), maka saklar akan kembali pada kondisi normal. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0). Istilah On dan Off ini menjadi sangat penting karena semua perangkat listrik yang memerlukan sumber energi listrik pasti membutuhkan kondisi On dan Off.

2. Rangkaian [Kembali]

3. Prinsip Kerja [Kembali]

Pada rangkaian ini menggunakan 2 buah Simulino Uno, resistor, serta buzzer. Pin 10, 11, 12, dan 13 master dihubungkan ke pin 10,11, 12, dan 13 slave sebagai pin MISO, MOSI, SCLK, dan SS. Kemudian pin 7 masing-masing arduino dihubungkan ke LED yang sebelumnya sudah diberi resistor. Kemudian LED dihubunkan ke button lalu ke pin 2. Selain itu pin 2 juga dihubungkan ke resistor.

//MASTER


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


#define LED 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(LED,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(LED,HIGH);              //Sets pin 7 HIGH


    Serial.println("Master buzzer ON");


  }


  else


  {


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


   Serial.println("Master LED OFF");


  }


  delay(1000);


}

Pada listing program master, deklarasikan pin 7 terhubung ke LED 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 LED 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 LED akan menyala dan pada kondisi lainnya LED 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(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("SlaveLED 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(1000);


}


}

Pada listing program slave, deklarasikan library SPI.h, pin 7 dihubungkan ke LED, 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, LED 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 LED menyala. Untuk keadaan lainnya outputnya LOW atau LED 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.

4. Video Percobaan [Kembali]

5. Analisa [Kembali]

1. Pada Program "SPI.setClockDivider(SPI_CLOCK_DIV8);" apabila nilai 8 divariasikan menjadi 4, 16 , 32 berapa nilai clock yang dihasilkan oleh master? [Arduino Clock speed: 16Mhz]

  • Saat (SPI_CLOCK_DIV4), maka 16/4 = 4 MHz nilai clock yang dihasilkan 
  • Saat (SPI_CLOCK_DIV4), maka nilai clock yang dihasilkan adalah 16/16 = 1 MHz 
  • Saat (SPI_CLOCK_DIV4), maka nilai clock yang dihasilkan adalah 16/32 = 0.5 MHz 
  • 2. Analisa pengaruh kecepatan pengiriman data berdasarkan nilai clock yang digunakan!

    Semakin besar nilai clock yang digunakan, maka akan semakin cepat pengiriman datanya. Begitu sebaliknya, semakin kecil frekuensi nilai clock yang digunakan, semakin lambat pengiriman datanya.

    6. 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...