Jumat, 03 Juni 2016

Communication Arduino Using SPI (Serial Peripheral Interface)

COMMUNICATION ARDUINO USING SPI
VIA ARDUINO


Salam elektro,pada postingan kali ini aruselektronika akan menghubungakan beberapa arduino dengan menggunakan jalur SPI (serial peripheral interface) (master & slave) 

TOLONG BACA DENGAN DETAIL !

Siapkan alat dan bahan :
  • Arduino Uno/Nano/Mega (sama saja)
  • Kabel jumper disesuaikan
  • Breadboard
  • Kabel usb
  • Laptop
  • Software arduino ide
  • Download library <LiquidCrystal.h> (tutorial instal library klik disini)
  • Download simulation proteus 
1. Sambungkan arduino dengan board arduino lainya

CATATAN !
a. Pastikan jalur SPI sudah benar 
b. Jika ingin menggunakan lcd wiring juga lcd dengan benar 

2. Copy paste sketch/program di bawah ini  ke dalam software arduino

Master Program
void initSPI_Master() {
DDRB |= (1<<2)|(1<<3)|(1<<5); // SCK, MOSI dan SS menjadi output
DDRB &= ~(1<<4);
// MISO menjadi input
SPCR |= (1<<MSTR); // SPI sebagai master
SPCR |= (1<<SPR0)|(1<<SPR1); // Pembagi clock = 128
SPCR |= (1<<SPE); // Aktifkan SPI
}
void setup() {
initSPI_Master();
pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT);
digitalWrite(2,HIGH); digitalWrite(3, HIGH); digitalWrite(4, HIGH);
}

void loop() {
if(digitalRead(2)==LOW) {
kirimData("Arus\r\n");
}
else if(digitalRead(3)==LOW) {
kirimData("Elektronika\r\n");
}
else if(digitalRead(4)==LOW) {
kirimData(".Blogspot.co.id\r\n");
}
}
void kirimData(char *string) {
int panjangString = strlen(string);
for(int i=0; i<panjangString; i++) { SPDR = string[i];
while(!(SPSR & (1<<SPIF)));
delay(10);
}
}

Slave Program  
#include <LiquidCrystal.h>
LiquidCrystal lcd(5, 4, 3, 2, 1, 0);
String dataString = "";
char data;

void initSPI_Slave() {
DDRB &= ~((1<<2)|(1<<3)|(1<<5)); // SCK, MOSI dan SS menjadi input
DDRB |= (1<<4);
// MISO menjadi output
SPCR &= ~(1<<MSTR); // SPI sebagai slave
SPCR |= (1<<SPR0)|(1<<SPR1); // Pembagi clock = 128
SPCR |= (1<<SPE); // Aktifkan SPI
}
void setup() {
initSPI_Slave();
lcd.begin(16, 2); lcd.clear();
lcd.setCursor(0,0); lcd.print("SPI Slave Begin");
}
void loop() {
while(!(SPSR & (1<<SPIF))); // Tunggu data masuk
data = SPDR;
if(data!='\n') {
if(data!='\r') {
// Menyimpan isi register SPDR ke variabel data
dataString += data; // Simpan data ke dalam string
}
}
else {
lcd.clear(); lcd.setCursor(0,0); lcd.print("Data Receive ==> "); lcd.setCursor(0,1);
lcd.print(dataString); // Menampilkan string ke LCD
dataString = "";      
}
}

3. Verify program arduino,apabila tidak terjadi error lanjut dengan proses upload dengan cara upload program master terlebih dahulu ke arduino 1 kemudian upload program slave ke arduino 2,bila ingin ditambahkan lagi tinggal kalian buat lagi program untuk arduino slave 3 / arduino 3 

4. Upload program,apabila succes akan muncul tulisan done uploading,apabila ada yang belum tahu bagaimana cara upload code/sketch ke board arduino bisa baca disini dan cara upload program arduino di software proteus baca disini 

5. Sekarang kalian coba tekan push button pada board master,lihat apa yang akan di proses oleh board slave arduino 





Share:

0 comments:

Posting Komentar

Copyright © FILAB | Powered by FILAB
Design by Fickry Muhammad | Technology by Filab.id