- Button
- LED
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).
- Arduino Uno
2. Rangkaian Simulasi [back]
#define button 2 //Deklasrasi pin 2 terhubung pada button
void setup (void) { //Fungsi yang dieksekusi sekali
pinMode(button, INPUT_PULLUP); //Deklarasi button sebagai input dalam kondisi pull-up
Serial.begin(115200 ); //Set baud rate 115200
digitalWrite(SS, HIGH); //Pin SS berlogika HIGH atau menonaktifkan pin SS
SPI.begin (); //Mremulai komunikasi SPI
SPI.setClockDivider(SPI_CLOCK_DIV8); //Membagi clock dengan 8
void loop (void) { //Fungsi yang dijalankan berulang atau looping
char c; //Deklarasi variabel c menggunakan tipe data char/character
int nilai=digitalRead(button); //Deklarasi variabel nilai merupakan hasil pembacaan kondisi button
if(nilai==0){ //Fungsi kondisional saat variabel nilai berlogika 0
digitalWrite(SS, LOW); //Pemberian logika LOW pada pin SS sehingga SS aktif //
for (const char * p = "Hello, world!\r" ; c = *p; p++) //Memasukkan nilai variabel p, dan increment variabel p
{
SPI.transfer (c); //Data dari master dikirimkan atau ditransfer
Serial.print(c); //Mencetak data yang didapatkan pada monitor serial
}
digitalWrite(SS, HIGH); //Pin SS berlogika HIGH, sehingga pin SS tidak aktif
delay(2000); //Penundaan looping selama 2000 ms
}
}
#define led 2 //Deklarasi pin 2 terhubung ke LED
char buff [50]; //Deklarasi variabel buff dengan array 50
volatile byte indx; //Deklarasi variabel indx
volatile boolean process; //Deklarasi variabel process
void setup (void) { //Fungsi yang hanya dieksekusi sekali
Serial.begin (115200); //Set baud rate 115200
pinMode(led, OUTPUT); //LED berfungsi sebagai output
SPCR |= _BV(SPE); //Mengaktifkan SPI dalam mode Slave
indx = 0; //Set nilai variabel indx menjadi 0
process = false; //Memasukkan nilai false ke dalam variabel process
SPI.attachInterrupt(); //Mengaktifkan intterupt
}
ISR (SPI_STC_vect) // SPI interrupt routine
{
byte c = SPDR; //Membaca data dari Data Register SPI
if (indx < sizeof buff) { //Kondisi saat nilai indx < dari jumlah array buff
buff [indx++] = c; //Data disimpan pada index selanjutnya di array buff
if (c == '\r') //Pengecekan pada akhir kata
process = true; //Memasukkan nilai tru ke variabel process
}
}
void loop (void) { //Fungsi yang dieksekusi berulang kali atau looping
if (process) { //Kondisional untuk nilai variabel process
digitalWrite(led, HIGH); //Pada LED akan diberi logika HIGH maka LED menyala
process = false; //Memberikan nilai false pada variabel process atau me reset variabel process
Serial.println (buff); //Mencetak array pada serial monitor
indx = 0; //Memasukkan nilai 0 pada variabel indx atau mereset button ke 0
delay(1000); //Menunda proses perulangan selama 1000 ms
}
else //Untuk kondisi lain
{
digitalWrite(led, LOW); //LED diberi logika LOW maka LED mati
}
}
1. Pada saat digunakan dua perangkat slave, bagian mana yang akan diubah? Apakah pada bagian rangkaian, program, atau keduanya?
Jawab: Pada SPI jumlah maksimum slave yang dapat digunakan adalah 4 slave. Untuk penambahan slave menjadi 2, maka dilakukan perubahan pada kedua aspek, yaitu rangkaian dan programnya. Pada SPI untuk multislave, ada dua bentuk rangkaian yang dapat digunakan, Yaitu:
· Independent Slave Configuration
Pada konfigurasi ini setiap pin SS/CS terhubung ke slave yang berbeda beda. Apabia master ingin berkomunikasi dengan slave tertentu, master akan mengirimkan sinyal LOW kepada slave tersebut. Logika ini akan dipertahankan selama proses pertukaran data. Setelah diberi logika LOW kepada Slave yang dituju, maka data dikirim dari master melalui pin MOSI. Pada saat yang bersamaan akan dihasilkan sinyal clock melalui pin SCLK. Apabila master ingin mendapat respon, maka akan dikirim lagi sinyal clock hingga data dikirim oleh slave melalui pin MISO.
· Daisy Chain Configuration
Pada konfigurasi ini, master hanya memerlukan satu pin SS/CS untuk berkomunikasi dengan slave-slave yang ada. Untuk mengirimkan data, master akan mengirimkan sinyal LOW kepada slave yang ada untuk inisiasi komunikasi. Setelah itu, data akan dikirimkan oleh master kepada Slave 1 melalui pin MOSI. Pada saat yang bersamaan dikirimkan sinyal clock melalui pin SCLK. Data yang sudah dikirim ke Slave 1 diteruskan ke Slave 2 dan seterusnya. Logika pada SS/CS dipertahankan dalam posisi LOW selama proses komunikasi berlangsung. Master harus mengirimkan sinyal clock yang cukup hingga data sampai pada slave terakhir. Apabila master ingin mendapatkan respon, maka ia harus mengirim sinyal clock hingga data kembali ke master.
Untuk programnya, apabila digunakan independent slave configuration, maka pada program untuk master, harus ada 2 alamat/kondisi untuk SS/CS pada master. Alamat untuk Slave Select 1 dan alamat untuk Slave Select 2. Alamat ini berfungsi sebagai identitas bagi masing-masing slave. Selain pada master, program pada slave juga diubah, pada slave diinisiasi kode identitas yang sudah diinisiasi sebelumnya pada master. Tujuannya agar slave mengetahui saat master mengirim kode. Pada slave juga diinisiasi kode untuk perintah menerima atau mengirim data.
HTML - Download
No comments:
Post a Comment