TP Modul 3







1.Kondisi  [kembali]


Ubah button menjadi saklar SPDT ! 

2. Gambar Rangkaian Simulasi    [kembali]


Prinsip Kerja : 
Rangkaian diatas merupakan rangkaian Serial Peripheral Interface (SPI) dimana prinsipnya sama dengan komunikasi UART yaitu memakai 2 buah arduino yang berfungsi sebagai master dan slave, hanya saja pada SPI memakai 3 jalur untuk mentransfer data yaitu MOSI, MISO dan SCLK. Pada rangkaian, pin 2 di arduino merupakan input, dimana terdapat resistor Pull Up untuk mengetahui nilai logika pada rangkaian. Pin 11,12,13 bertindak sebagai jalur, oleh karena itu LED dihubungkan pada Slave, karena nanti slave yang bertindak sebagai output. Switch SPDT dihubungkan pada master, karena switch akan bertindak sebagai input yaitu bekerja sebagai pemberi kondisi high dan low, jika dihubungkan ke pin 2 maka akan berkondisi high, jika tidak maka akan berkondisi low atau LED mati.







//MASTER

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

void setup (void) {
 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;
 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);
}

//SLAVE

#include <SPI.h> char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
  Serial.begin (115200);
  pinMode(MISO, 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) { 
  process = false; //reset the process 
  Serial.println (buff); //print the array on serial monitor
   indx = 0; //reset button to zero   }
}

5. Video Tutorial  [kembali]



6. Link Download   [kembali]


Download Video disini 
Download Rangkaian disini 
Download Listing Program disini

Tidak ada komentar:

Posting Komentar

PRAKTIKUM  MIKROPROSESOR DAN MIKROKONTROLER  KELAS B OLEH: Nurfi Syahri 1710953036 Dosen Pengampu: Dr...