Fuchsia Electricity Lightning

LAPORAN AKHIR MODUL 3

PERCOBAAN 2


[KEMBALI KE MENU SEBELUMNYA]

DAFTAR ISI
1. Kondisi
2. Hardware
3. Rangkaian Simulasi
4. Flowchart
5. Listing Program
6. Video Simulasi
7. Prinsip Kerja
8. Link download

1. Kondisi [KEMBALI]

Kondisi yang di pilih yaitu kondisi 2 percobaan 10 dimana ganti LED menjadi Buzzer


2. Hardware [KEMBALI]

Push Button


 

LED


Arduino

Resistor
 

 Power Supply

 



3. Rangkaian Simulasi [KEMBALI]


4. Flowchart [KEMBALI]




5. Listing program [KEMBALI]

      //MASTER


      #include <SPI.h> //Deklarasi library SPI

      #define button 2


      char data = "1";

      void setup (void) {

        pinMode(button, INPUT_PULLUP);

        Serial.begin(115200); //untuk memulai serial dengan Set baud rate 115200 untuk USART dan SPI

        digitalWrite(SS, HIGH); // disable Slave Select

        SPI.begin (); // untuk memulai komunikasi SPI

        SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8

      }


      void loop (void) {

        char c; // menginisialisasikan variabel C dengan tipe data char

        int nilai = digitalRead(button);

        if (nilai == 0) {

          digitalWrite(SS, LOW); // enable Slave Select untuk menghidupkan dari slave dibuat low karena si slave akan hidup ketika diberi input low karena dari master berlogika HIGH supaya arus mengalir

          // send test string

          for (const char * p = "1" ; c = *p; p++)

          {

            SPI.transfer (c);

            Serial.print(c); // sebagai penghubung serial monitornya

          }

          SPI.transfer("1");

          digitalWrite(SS, HIGH); // disable Slave Select menggunakan HIGH dikarenkan HIGH bertemu HIGH akan mati

          delay(2000);

        }

      }


//SLAVE

#include <SPI.h> //Deklarasi library SPI

#define buzzer 2


char buff [50]; // untuk menginisialisasikan variabel buff pada spi.h tinggal tambahkan library

volatile byte indx;// tidak ada koma

volatile boolean process;//  tidak ada koma dan boolean merupakan tipe data yang akan memilih


void setup (void) {

  Serial.begin (115200);// serial begin antara master dan slave harus sama

  pinMode(buzzer, OUTPUT); // have to send on master in so it set as output

  SPCR |= _BV(SPE); // turn on SPI in slave mode

  indx = 0; // buffer empty

  process = false;// Ketika dia masuk maka dia akan mati

  SPI.attachInterrupt(); // turn on interrupt

}


ISR (SPI_STC_vect) // SPI interrupt routine // fungsi yg digunakan Ketika program sudah berjalan

{ // fungsi yg digunakan Ketika program sudah berjalan

  byte c = SPDR; // read byte from SPI Data Register from slave

  if (indx < sizeof buff) {

    buff [indx++] = c; // save data in the next index in the array buff

    if (c == '1') //check for the end of the word

      process = true;

  }

  if (c == '1') { //check for the end of the word

    process = true;

  }

}


void loop (void) {

  if (process) {

    digitalWrite(buzzer, HIGH);

    process = false; //reset the process

    Serial.println (buff); //print the array on serial monitor

    indx = 0; //reset button to zero

    delay(1000);

  }

  else

  {

    digitalWrite(buzzer, LOW);

  }

}


6. Video Simulasi [KEMBALI]


7. Prinsip Kerja [KEMBALI]

Pada rangkaian simulasi SPI, disini kita menggunakan 2 buah arduino dimana yang satu sebagai master dan yang lainnya sebagai slave. Untuk listing program masing-masing arduino dapat dilihat di atas. KEdua arduino ini saling berhubungan melalui pin MISO, MOSI, SCK, dan SS.

PAda saat kita menekan push button, maka nantinya buzzer akan berbunyi selama waktu 2 detik, sesuai yang telah kita buat pada program arduino master. Selanjutnya buzzer akan berhenti dengan selang waktu 1 detik sesuai dengan yang kita buat pada program arduino slave. Buzzer akan berbunyi saat push button nya kita matikan.

8. Analisa

1. Jelaskan transmisi data pada SPI dan gambarkan timing diagram dari transmisi data pada SPI


Jawaban :

 


Komunikasi data SPI dimulai pada saat master mengirimkan clock melalui SCK dengan frekuensi lebih kecil atau sama dengan frekuensi maksimum pada slave. Kemudian, master memberi logika nol pada SS untuk mengaktifkan slave sehingga pengiriman data (berupa siklus clock) siap untuk dilakukan. Pada saat siklus clock terjadi transmisi data full duplex terjadi dengan dua keadaan sebagai berikut:

·         Master mengirim sebuah bit pada jalur MOSI, slave membacanya pada jalur yang sama.

·         Slave mengirim sebuah bit pada jalur MISO, master membacanya pada jalur yang sama..

Transmisi dapat menghasilkan beberapa siklus clock. Jika tidak ada data yang dikirim lagi maka master menghentikan clock tersebut dan kemudian menon-aktifkan slave.

Gambar timing diangram dari transmisi data pada SPI

 


2. Bagaimana cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave.

Jawaban :

Pada rangkaian SPI, dapat menggunakan 1 master dengan jumlah slave yang lebih dari satu. Jadi ketika menggunakan lebih dari 1 slave, maka hal itu disebut dengan Multiple Slave SPI Mode yang terdiri dari beberapa slave dengan 1 master. Dimana master tersebut menggunkan beberapa pin atau bisa juga jalur SS untuk mengakses SPI. Pin tersebut adalah MISO, MOSI dan SCK dari master yang terkoneksi secara parallel ke beberapa calve device. Kita anggap terdapat 3 buah slave, maka 3 pin SS dari master pin-nya akan terpisah dan hanya akan terkoneksi ke pin SS dari setiap slave dan pin SS lah yang akan bergantian memilih slave. Supaya tidak terjadi tabrakan antar data, maka tidak boleh memberi logic low “0” kepada pin SS1, SS2, SS3, secara bersamaan.

9. Link Download [KEMBALI]

    a. HTML

    b. Rangkaian Simulasi

    c. Listing Program

    d. Library klik di sini

    e. Datadheet klik di sini

    f. Video

Tidak ada komentar:

Posting Komentar