Laporan Akhir 2 (Modul 3)

Gambar 3. Arduino uno
2. Rangkaian Simulasi [kembali]
Gambar 4. Rangkaian Simulasi
Prinsip Kerja
     Rangkaian di atas merupakan rangkaian dengan komunikasi SPI. Rangkaian terdiri dari 2 buah arduino yang berfungsi sebagai master dan slave. Rangkaian komunikasi SPI ini mengirim data secara paralel dari satu arduino dengan arduino yang lain sehingga komunikasi yang dilakukan dapat dua arah. Pada rangkaian ini terdapat 4 buah pin pada arduino yaitu MISO, MOSI, SCLK, dan SS. MISO meruapakan kependekan dari Master Input Slave Output sedangkan MOSI kebaliikannya. SCLK merupakan clock, jika clok mengkonfigurasi master maka sclk sebagai output begitu juga sebaliknya. berikutnya terdapat  pin SS yang berfungsi untuk memilih slave. Pada rangkaian saat button ditekan maka pin 2 bernilai 0 yang kemudian di olah oleh arduino master lalu dikirim ke arduino slave kemudian pin 2 mengeluarkan output high sehingga LED menyala.



Gambar 5. Flowchart Master dan Slave

 Program Master
#include <SPI.h> //Deklarasi library SPI
#define button 2
void setup (void) {
  pinMode(button, INPUT_PULLUP);
  Serial.begin(115200 ); //Set baud rate 115200
  digitalWrite(SS, HIGH);
  // disable Slave Select
  SPI.begin ();
  SPI.setClockDivider(SPI_CLOCK_DIV8); //divide the clock by 8
}
void loop (void) {
  char c;
  int nilai=digitalRead(button);
  if(nilai==0){
   digitalWrite(SS, LOW); //enable Slave Select
  // send test string
  for (const char * p = "Hello, world!\r" ; c = *p; p++)
  {
    SPI.transfer (c);
    Serial.print(c);
  }
  digitalWrite(SS, HIGH); // disable Slave Select
  delay(2000);
  }
}

Program Slave
#include <SPI.h>
#define led 2

char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(led, 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;
  SPI.attachInterrupt(); // turn on interrupt
}

ISR (SPI_STC_vect) // SPI interrupt routine
{
  byte c = SPDR; // read byte from SPI Data Register
  if (indx < sizeof buff) {
    buff [indx++] = c; // save data in the next index in the array buff
    if (c == '\r') //check for the end of the word
      process = true;
  }
}
void loop (void) {
  if (process) {
    digitalWrite(led, 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(led, LOW);
  }
}





 
 
 

1. Apa fungsi library SPI.h ?

Jawaban:

Library SPI.h berfungsi untuk memanggil function yang ada pada library tersebut. Function tersebut berfungsi untuk melakukan perhitungan yang berguna untuk komunikasi SPI.

2. Bagaimana jika pin SS tidak dihubungkan?

Jawaban:

Jika pin SS tidak dihubungkan maka arduino master dan slave tidak terhubung. Pin SS merupakan pin untuk memilih hubungan antara master dan slave yang akan digunakan. Karena SS tidak terhubung maka LED pun tidak menyala.

3. Jika pada push button (input) dan led (output) ditambahkan resistor 100k, bagaimana pengaruhnya terhadap jalannya rangkaian?

Jawaban:

Pada percobaan terlihat bahwa LED tidak menyala. Hal ini disebabkan karena tingginya resistansi sehingga tidak mampunya tegangan untuk menuju input.

4. Bisakah menggunakan banyak master? Jelaskan alasannya

Jawaban:

Pada SPI dapat menggunakan dua master asalkan master dan slave terhubung dengan pin SS namun slave hanya dapat mengeksekusi 1 master sehingga master tidak dapat berjalan secara bersamaan, master yang terlebih dulu memberi inputlah yang akan diakses.

7. Download [kembali]

1. Video Download Di sini
2. HTML Download Di sini
3. Rangkaian Download Di sini
4. List Program Download Di sini
5. Library Arduino Download Di  sini
6. Datasheet arduino Dwonload Di  sini
[Kembali ke atas]

Tidak ada komentar:

Posting Komentar