LED
Push Button
Arduino Uno
Komunikasi SPI
Flowchart Master
Flowchart Slave
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);
}
}
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 ?
Fungsi library SPI.h adalah menangani komunikasi serial synchronus SPI pada ardunio. Komunikasi serial synchronous merupakan protokol komunikasi data secara serial yaitu komunikasi data yang memerlukan jalur clock untuk mengirimkan data dan sinkronisasi antara transmitter dan receiver.2. Bagaimana jika pin SS tidak dihubungkan?
Jika pin SS (Slave Select) tidak dihubungkan maka LED tidak akan menyala karena pin ss berfungsi untuk memilih slave mana yang akan berkomunikasi dengan master sehingga bila tidak dihubungkan maka perintah yang dikirim master tidak dapat diterima oleh slave.3. Jika pada push button (input) dan led (output) ditambahkan resistor 100k, bagaimana pengaruhnya terhadap jalannya rangkaian?
Jika ditambahkan resistor 100k ohm maka LED tidak akan menyala karena nilai tahanan yang sangat besar menghambat arus masuk ke button dan LED sehingga LED tidak mendapatkan arus yang cukup untuk menyala4.
Bisakah menggunakan banyak master? Jelaskan alasannya
Komunikasi SPI hanya bisa menggunakan 1 master saja karena master merupakan pengontrol seluruh komunikasi serial sinkron pada SPI. Namun untuk slave dapat digunakan lebih dari 1 slave karena master dapat memilih slave mana yang akan berkomunikasi dengannya melalui pin SS.
Tidak ada komentar:
Posting Komentar