TP Modul 3


TUGAS PENDAHULUAN

[KEMBALI KE MENU SEBELUMNYA]




Tambahkan resistor sebelum LED sebesar 1k ohm

 2. Rangkaian Simulasi [Kembali]














 

MASTER
#include <SPI.h> //Deklarasi library SPI
#define button 2

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 = "Hello, world!\r" ; c = *p; p++)
  {
    SPI.transfer (c);
    Serial.print(c); // sebagai penghubung serial monitornya
  }
  digitalWrite(SS, HIGH); // disable Slave Select menggunakan HIGH dikarenkan HIGH bertemu HIGH akan mati
  delay(2000);
  }
}

SLAVE
#include <SPI.h> //Deklarasi library SPI
#define led 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(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;// 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 == '\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(buzzer, LOW);
  }
}
5. Video [Kembali]


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.


HTML - Download!!!
Simulasi Proteus - Download!!!
Listing Program [MASTER] - Download!!!
Listing Program [SLAVE] - Download!!!
Video - Download!!!


No comments:

Post a Comment

Bahan Presentasi Untuk Matakuliah  SENSOR Dosen Pengampu :  Darwison, MT  OLEH : FARHAN FADIL IRSAN (1810952041) ...