1. Kondisi [kembali]
Ubah button menjadi saklar SPDT
2. Rangkaian simulasi [kembali]
Prinsip kerja :
Rangkaian yang digunakan adalah rangkaian Serial Peripheral Interface (SPI), prinsipnya sama dengan komunikasi UART yang masih memakai 2 buah arduino, pada SPI terdapat 3 jalur untuk mentransfer data yaitu :
- Master Output Slave Input (MOSI)
Jika dikonfigurasi sebagai master maka pin MOSI sebagai output, jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
- Master Input Slave Output (MISO)
Jika dikonfigurasi sebagai master maka pin MISO sebagai input, jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
- Clock (SCLK)
Jika dikonfigurasi sebagai master maka pin SCLK sebagai output, jika dikonfigurasi sebagai slave maka pin SCLK sebagai input.
Pin 11,12, dan 13 merupakan jalur, dengan master sebagai input dan slave sebagai outputnya (MISO). Oleh karena itu LED dihubungkan pada slave, dikarenakan slave merupakan output. Saklar SPDT dihubungkan pada master, dikarenakan saklar SPDT akan berfungsi sebagai input dengan memberi kondisi HIGH (LED nyala) jika dihubungkan pada pin 2, dan akan memberi kondisi LOW (LED mati) jika dihubungkan ke ground.
3. Flowchart [kembali]
4. List Program [kembali]
//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 [kembali]
6. Link Download [kembali]
Download file rangkaian disini
Download video simulasi disini
Download HTML disini
Tidak ada komentar:
Posting Komentar