1. Komponen[KEMBALI]
- LED
LED dapat kita definisikan
sebagai suatu komponen elektronika yang terbuat dari bahan semikonduktor dan
dapat memancarkan cahaya apabila arus listrik melewatinya.
Led (Ligth-Emitting Diode)
memiliki fungsi utama dalam dunia elektronika sebagai indikator atau sinyal
indikator atau lampu indikator.
LED terdiri dari sebuah chip
semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang
dimaksud dengan proses doping dalam semikonduktor adalah proses untuk
menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga
menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri
tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K),
Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang
kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material).
Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya
monokromatik (satu warna).
- Button
Push button switch (saklar
tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk
menghubungkan atau memutuskan aliran arus listrik dengan sistem kerja tekan
unlock (tidak mengunci). Sistem kerja unlock disini berarti saklar akan bekerja
sebagai device penghubung atau pemutus aliran arus listrik saat tombol ditekan,
dan saat tombol tidak ditekan (dilepas), maka saklar akan kembali pada kondisi
normal.
- Arduino Uno
Arduino Uno adalah board
mikrokontroler berbasis ATmega328 (datasheet). Memiliki 14 pin input dari
output digital dimana 6 pin input
tersebut dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz
osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Untuk
mendukung mikrokontroler agar dapat digunakan, cukup hanya menghubungkan Board
Arduino Uno ke komputer dengan menggunakan kabel USB atau listrik dengan AC
yang-ke adaptor-DC atau baterai untuk menjalankannya.
2. Rangkaian Simulasi[KEMBALI]
Prinsip Kerja:
Pada rangkaian diatas
digunakan button tipe pull up yang terhubung ke pin 2 digital arduino master. Lalu
terdapat 2 buah output yaitu led yang terhubung ke pin 2 digital arduino slave
dan buzzer ke pin 5 digital arduino slave. Dalam rangkaian SPI ini pin
13,12,11,10 pada arduino master dengan slave dihubungkan. Apabila rangkaian
dijalankan dengan kondisi button belum di tekan maka arduino master akan mendisable
slave select yang mana data diterima oleh arduino slave yaitu kondisi led dan
buzzer low. Jika kondisi button dipencet maka arduino master akan mengenable
slave select sehingga data dikriimkan melalui SPI transfer ke slave yang mana
pada slave terjadi pembacaan data dari master sehingg led dan buzzer menyala.
3. Flowchart[KEMBALI]
- Master
- Slave
4. Listing Program[KEMBALI]
- 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
#define buzzer 5
char buff [50];
volatile byte indx;
volatile boolean process;
void setup (void) {
Serial.begin (115200);
pinMode(led, OUTPUT);
pinMode(buzzer, 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);
digitalWrite(buzzer, HIGH);
delay(100);
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);
digitalWrite(buzzer, LOW);
}
}
5. Video Simulasi[KEMBALI]
6. Kondisi[KEMBALI]
1. Jelaskan transmisi data
pada SPI dan gambarkan timing diagram dari transmisi data pada SPI
Jawab:
Pengiriman data dimulai dari
LSB ke MSB. Data D0 pada MSB bergeser ke R7 pada LSB dan data MSB bergeser ke
kanan 1 bit melalui MOSI sehingga data R7 pada LSB masuk ke MSB melalui MISO. SPI
beroperasi berdasarkan shift register baik master device maupun slave device,
keduanya akan mempunyai 8 bit shift register. Untuk memulai komunikasi, bus
master melakukan konfigurasi clock, dengan catatan frekuensi atau kecepatan
transfer data antara SPI master device dan slave device harus sama. Setiap satu
clock SPI dilakukan, maka akan terjadi komunikasi full duplex antara master
device dengan slave device. Master mengirimkan satu Bit pada line MISO, lalu
slave akan membacanya. Setelah itu, pada line MISO slave device akan
mengirimkan data kembali ke master device dan master akan membacanya. Urutan
atau sekuen ini akan bertahan seperti di atas meskipun kita tidak menggunakan
komunikasi Full Duplex atau hanya menggunakan satu line komunikasi saja (seperti
simplex ).
Timing Diagram:
2. Bagaimana cara
menghubungkan rangkaian SPI saat menggunakan lebih dari satu slave
Jawab:
Berdasarkan gambar diatas
dapat dilihat SCk pada SPI master dihubungkan masing masing dengan SCL slave
pertama sampai dengan slave ke tiga. Sedangkan pin MOSI pada Master hanya
dihubungkan dengan pin MOSI slave pada slave pertama serta MISO slave pertama dhubungkan dengan MOSI
slave ke dua lalu MISO salve ke dua dihubungkan dengan MOSI slave ke tiga
sedangkan MISO salve ke tiga dihubungkan dengan MISO master. Untuk pin SS
master dihubungkan masing-masing dengan SS pin Slave.
7. Link Download[KEMBALI]
Tidak ada komentar:
Posting Komentar