TPM3






1. Kondisi   [ K E M B A L I]

Buatlah kondisi awal LED mati, lalu hidup berkedip dengan delay 1000 ms

2. Gambar Rangkaian Simulasi   [ K E M B A L I]






3. Flowchart   [ K E M B A L I]




4. Listing Program   [ K E M B A L I]

1. MASTER
#include <SPI.h> //Deklarasi library SPI
#define button 7
void setup (void) {
pinMode(button,INPUT_PULLUP);

Serial.begin(9600);
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() //Semua kode dalam fungsi ini dieksekusi berulang
{
int nilai = digitalRead(button);

//Button ditekan

if (nilai == 0)
{
Serial.print("1");
}
else
{
Serial.print("2");
}

delay(1000);

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);
delay(1000);

}

2. SLAVE
#include <SPI.h>
#define led 7
char buff [50];
volatile byte indx;
volatile boolean process;

void setup (void) {
pinMode(led,OUTPUT);
Serial.begin(9600);
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 (Serial.available() > 0)
{
int data = Serial.read();
if (data == '1') //Jika data yang dikirimkan berlogika
{
digitalWrite(led, HIGH);
digitalWrite(led, LOW);//LED menyala
delay(2000);
}
else
{
digitalWrite(led, LOW); //LED mati
}
}
if (process) {
process = false; //reset the process
Serial.println (buff); //print the array on serial monitor
indx = 0; //reset button to zero
}
}

5. Vidio Simulasi   [ K E M B A L I]






6. Prinsip Kerja   [ K E M B A L I]

       

Rangkaian diatas merupakan rangkaian Serial Peripheral Interface (SPI) prinsipnya sama dengan komunikasi UART yaitu masih memakai 2 buah Arduino , hanya saja pada SPI ini, memakai 3 jalur untuk mentranfer data, yaitu
MOSI : Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input.
MISO : Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output.
SCLK : Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input.

Pada rangkaian diatas, pin 11,12,13 bertindak sebagai jalur, disini master bertindak sebagai input
dan slave sebagai output atau memakai jalur MISO, oleh karena itu LED nya dihubungkan pada Slave, karna nantik Slave yang bertindak sebegai output. button dihubungkan pada Master, karena button akan bertindak sebagai input, yaitu bekerja sebagai memberi kondisi high dan low, jika ditekan maka akan berkondisi high, jika tidak maka kondisi low. sedangkan pada rangkaian, jika buttonnya ditekan, maka akan berkondisi high dan low atau led berkedip dengan delay 1000 ms, dan ketika buttonnya tidak ditekan, maka, akan berkondisi low atau lednya mati.
7. Link Download   [ K E M B A L I]


c. File HTML
















Tidak ada komentar:

Posting Komentar