LAPORAN AKHIR 2 MODUL 3 (percobaan 2 : Kondisi 12)






1. Hardware[kembali]

      
Push Button

 
LED


Arduino
 

Resistor

 
 
 Power Supply




Buzzer




Voltmeter DC





2. Rangkaian Simulasi[kembali] 








3. 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(1000);
  }
}

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

FLOWCHART





      

4. Kondisi[kembali]


Percobaan 2, kondisi 12 : Ganti LED menjadi Buzzer, Buatlah kondisi awal Buzzer mati, lalu hidup dengan delay 1000 ms.





5. Video Simulasi [kembali]






Prinsip Kerja 


Pada rangkaian dipasang 2 arduino yang dimana satu sebagai master dan satu lagi sebagai slave. Arduino sebagai master maksudnya bahwa arduino tersebut akan memberi perintah lalu menerima dan mengolah data dari slave arduino hingga keluar output. Pin 10, 11, 12, dan 13 yang saling dihungkan untuk mendukung agar lancar komunikasi SPI dengan library SPI yang diinputkan pada Arduino IDE yang dipasang pada masing-masing arduino dengan listing yang disesuaikan.

Kemudian, pin 2 yang dideklarasikan pada masing-masing dua arduino tersebut dirangkai push button, rangkaian pullup, resistor, buzzer, serta voltmeter. Push button berfungsi sebagai trigger yang akan mengaktifkan arduino master untuk memanggil slaves arduino. Lalu, slave arduino pada startup push button, maka slave akan mengirimkan data ke master, kemudian data tersebut diolah oleh master untuk menghasilkan output berupa buzzer pada rangkaian tersebut. 

Ketika program di run, keadaan diatur oleh push button, dimana ketika push button tidak ditekan, maka pin 2 pada master berlogika high, sedangkan slave berlogika low. Lalu, ketika push button dipasangkan, maka mastes dan slave akan aktif bekerja hingga membuat buzzer menyala.  Dalam program listing terdapat delay mengatur antara dua kondisi yaitu slave berlogika 1 dan 2 secara bergantian pada pin 2 sehingga selama delay itu, karena delay sangat cepat, maka pada simulasi hampir tidak terlihat adanya delay. 


6. Analisa dan Pembahasan [kembali]


Percobaan 2

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

Jawab:

Komunikasi data SPI dimulai saat master mengirimkan clock dengan SCK dengan frekuensi lebih kecil atau sama dengan frekuensi slave sehingga pengiriman data dapat dilakukan. Pada siklus clock terjadi transmisi data full duplex. Pertama, master mengirim sebuah bit pada jalur MOSI, slcae membacaranya. Kemudian, slave mengirim sebuah bit pada jalur MISO, kemudian master membacanya pada jalur yang sama.

Penggambaran gambar timing diagram dari transmisi data pada SPI adalah sebagai berikut.


 

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

Jawab:

Cara menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave yaitu dengan memparallelkan slave pada rangkaian. Dengan dipasang secara parallel, pin pada master dapat dihungkan secara langsung melalui percabangan ke pin lebih dari satu slave.



7. Link Download[kembali]

Download File Rangkaian (di sini

Download Video Simulasi (di sini)

Download listing Program (di sini)

Download File HTML (di sini)

Datasheet LM 35 Link Download

Datasheet LCD 2X16 Link Download

Datasheet Arduino Uno Link Download

Datasheet Buzzer - Link Download

Tidak ada komentar:

Posting Komentar

  PRAKTIKUM MIKROPROSESOR DAN MIKROKONTROLER 2021     OLEH: Muhammad Alfario Wirawan 1910953019 Kelompok 3 JURUSAN TEKNIK ELEKTRO FAKULTAS T...