1.komponen   [kembali]

Arduino

Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.

Button

Push Button adalah saklar tekan yang berfungsi sebagai pemutus atau penyambung arus listrik dari sumber arus ke beban listrik. Suatu sistem saklar tekan push button terdiri dari saklar tekan start, stop reset dan saklar tekan untuk emergency. Push button memiliki kontak NC (normally close) dan NO (normally open).

LED

Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor.



2.RangkaianSimulasi   [kembali]


Gambar Rangkaian  Percobaan 2


3. Flowchart  [kembali]




Gambar 3. Flowchart Program Arduino Master 

Gambar 3. Flowchart Program Arduino Slave



4. Listing Program  [kembali]

//MASTER

 

#include <SPI.h>

 

void setup (void) {

Serial.begin(115200);

//set baud rate to 115200 for usart

digitalWrite(SS, HIGH);

// disable Slave Select

SPI.begin ();

SPI.setClockDivider(SPI_CLOCK_DIV8);//divide the clock by 8

}

 

void loop (void) {

   char c;

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>

char buff [50];

volatile byte indx;

volatile boolean process;

 

void setup (void) {

Serial.begin (115200);

pinMode(MISO, 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) {

      process = false; //reset the process

Serial.println (buff); //print the array on serial monitor

indx= 0; //reset button to zero

   }

}

5. Video  [kembali]






Video PenjelasanRangkaianPercobaan 

Cara kerja
merupakan komunikasi serial 1arah yang lebih cepat dibandingkan UART. prinsip kerjanya sinyal clock dialirkan darimaster menuju slave untuk sinkronisasi lalu master dapat memilih slave mana yang akan dikirimkan data melalui pin MOSI dan jika dibutuhkan respon maka slave akan mengirimkan data ke mater melalui  pin MISO. 


6.kondisi [kembali]

Percobaan 2 komunikasi SPI

Analisa :

1.    1.       Apakah kit dapat menggunakan lebih dari 1 master?  Jelaskan alasannya

       Jawab:

          Tidak bisa karena untuk komunikasi SPI biasanya terdapat 1 perangkat “master” tunggal yang               memulai komunnikasi dan memasok jam yang mengontrol laju transfer data. Dan untuk slavenya bisa     menggunakan beberapa slave.

2. Jelaskan pengaruh input pullup dan pulldown pada rangkaian !

Jawab:

Pengaruh input pullup yaitu hubungan antara pin I/O dan tegangan suplai,dengan sakelar terbuka yang dihubungkan antar I/O dan ground ,menjaga masukkan tetap tinggi sedangkan pulldown hubungan antar pin I/O dan ground ,dengan sakelar terbuka yang terhubung antara I/O dan +supply,menjaga masukan tetap rendah.Pull up dan Pulldown bekerja dengan konsep yang sama,keduanya adalah untuk mencegah terjadinya floating(kondisi mengambang).jadi pada rangkaian pull up berarti penambahan resistor ke sinyal high sedangkan pull down berarti penambahan resistor ke sinyal low.

 

3. Jelaskan prinsip kerja SPI pada rangkaian

Jawab:

Pada rangkaian terdapat dua simulino uno yaitu master dan slave ,button dan led red.Pin 10 master terhubung ke 10 slave,pin 11 master terhubung ke 11 slave ,pin 12 master terhubung ke 12 slave dan pin 13 master terhubung ke 13 slave.Pada pin 2 master terhubung ke button lalu terhubung ke ground yang mana menjadi inputnya.Pada pin 2 slave terhubung ke led red laluke ground yang akan menampilkan outputnya. Pada program Arduino master  pertama dideklarasikan library SPI ,setelah itu dideklarasikan button pada pin 2 ,lalu dibuat void setup dimana semua kode didalam fungsi ini hanya di baca satu kali.Setelah itu di set baud rate 115200,lalu dibuat digitalWrite(SS, HIGH), setelah itu dimatikan slave select SPI.begin (),setelah itu pembagi clock dengan 8.Setelah itu,dibuat fungsi void loop dimana semua kode yang berada dalam fungsi ini dibaca berulang.setelah itu dibuat char c  ,int nilai=digitalRead(button) ,jika  if(nilai==0) lalu digunakan enable select digitalWrite(SS, LOW),lalu dikirim test string maka dibuat for (const char * p = "Hello, world!\r" ; c = *p; p++) setelah itu dibuat  SPI.transfer , Serial.print(c) lalu dibuat disable slave select, digitalWrite(SS, HIGH) dan terdapat delay 2000.

Pada program slave,pertama dibuat library SPI dan dideklarasikan led sebagai output pada pin 2,lalu dibuat char buff [50],volatile byte indx ,volatile boolean process.setelah void setup () yang man dibaca sekali ,setelah itu di set baud rate 115200.lalu pinMode(led, OUTPUT) yaitu menjadikan led sebagai output.selanjutnya menghidupkan SPI pada mode slave  ,lalu diberi indeks =0 setalah itu jika proses false maka dibuat SPI.attachInterrupt() .lalu dibuat ISR (SPI_STC_vect), setelah itu dibaca byte berupa variabel c dari data register SPI. Lalu dibuat   if (indx < sizeof buff), buff [indx++] = c, if (c == '\r') lalu proses benar. Selanjutnya dibuat fungsi void loop dimana fungsi ini dapat dibaca secara berulang.Jika   if (process)  maka digitalWrite(led, HIGH),lalu proses false maka direset proses lalu dibuat Serial.println (buff)  dan indx = 0 .tearkhir ada delay 1000.dan selain kondisi itu else maka  digitalWrite(led, LOW) LED mati.

Pada rangkaian input diberikan oleh button saat ditekan dan tidak ditekan,lalu sinyal clock dialirkan dari master ke slave yang berfungsi untuk singkronisasi.master dapat memilih slave mana yang akan dikirimkan data melalui slave select,kemudian data dikirimkan dari master ke slave melalui MOSI .Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.jika button ditekan maka data akan ditransmisikan melalui MOSI dan perlu disinkronisasikan ,sehingga led menyala walau agak ada delay dan apabila dibiarkan ditekan maka led mati lalu hidup kembali .jika button tidak ditekan maka akan ditransmisikan sesuai prinsip diatas sehingga led mati.


File HTML - download
File rangkaian  - download
File video - download
File Library Arduino download
File Datasheet  download





Tidak ada komentar:

Posting Komentar