#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(1000);
}
}
#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. Bisakah pada SPI menggunakan lebih dari 1 master? Jelaskan beserta alasannya!
JAWAB:
Untuk SPI, hanya dapat menggunakan 1 master saja. Hal tersebut dikarenakan Master pada SPI sebagai pengontrol komunikasi serial sinkron pada SPI dimana dapat mengirim atau menerima data. Namun, SPI ini dapat memiliki lebih dari 1 Slave dimana terdapat Slave Select (SS) untuk memilih (mengontrol) Slave mana yang dipilih oleh Master.
2. Jelaskan pengaruh input pullup dan pulldown pada rangkaian !
JAWAB:
Pengaruh input pullup dan pulldown pada rangkaian tersebut ada pada button sebagai data yang akan dibaca oleh mikrokontroler Master yang kemudian akan mengirimkan paket data (bit-bit) ke Slave. Berdasarkan program Arduino yang dibuat, ketika button dalam keadaan pullup, maka button akan menerima logika LOW dari Arduino (bernilai 0) sehingga ketika terbaca oleh Master, Master akan mengirimkan paket data “1” dimana pada Slave ketika menerima data “1” berarti LED hidup (berlogika HIGH). Sedangkan ketika pulldown, button akan menerima logika HIGH (bernilai 1) sehingga ketika terbaca oleh Master selain dari nilai 0, Master akan mengirimkan data “2” dimana pada Slave ketika menerima data selain dari “1” berarti LED mati (berlogika LOW).
3. Jelaskan prinsip kerja SPI pada rangkaian
JAWAB:
Pada rangkaian ini digunakan komunikasi SPI ( Serial Peripheral Interface). Komunikasi SPI digunakan pada dua arduino yang masing-masing berperan sebagai master dan slave. Komunikasi ini dilakukan dengan menghubungkan mosi dari master dengan mosi dari slave, miso dari slave dengan miso dari master, sclk dari master dengan sclk dari slave, dan ss dari slave dengan ss master. Push button berfungsi sebagai input pullup dari master, artinya apabila push button ditekan maka akan berlogika low (0) dan apabila diangkat maka akan berlogika high (1). Saat master mengirimkan logika low ke slave maka LED akan hidup dan mati secara bergantian dengan jeda 1000 ms atau 1 s. Sedangkan saat master mengirimkan logika high ke slave maka LED akan mat
No comments:
Post a Comment