#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);
}
}
#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 ?
Jawaban:
Library SPI.h berfungsi untuk memanggil function yang ada pada library tersebut. Function tersebut berfungsi untuk melakukan perhitungan yang berguna untuk komunikasi SPI.
2. Bagaimana jika pin SS tidak dihubungkan?
Jawaban:
Jika pin SS tidak dihubungkan maka arduino master dan slave tidak terhubung. Pin SS merupakan pin untuk memilih hubungan antara master dan slave yang akan digunakan. Karena SS tidak terhubung maka LED pun tidak menyala.
3. Jika pada push button (input) dan led (output) ditambahkan resistor 100k, bagaimana pengaruhnya terhadap jalannya rangkaian?
Jawaban:
Pada percobaan terlihat bahwa LED tidak menyala. Hal ini disebabkan karena tingginya resistansi sehingga tidak mampunya tegangan untuk menuju input.
4. Bisakah menggunakan banyak master? Jelaskan alasannya
Jawaban:
Pada SPI dapat menggunakan dua master asalkan master dan slave terhubung dengan pin SS namun slave hanya dapat mengeksekusi 1 master sehingga master tidak dapat berjalan secara bersamaan, master yang terlebih dulu memberi inputlah yang akan diakses.
Tidak ada komentar:
Posting Komentar