LAPORAN AKHIR 2 MODUL III

 




1. Komponen [kembali] 

  • 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.
  • 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).
  • 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]


 

3. Flowchart [kembali]

 



4. Listing Program [kembali] 

#include <SPI.h> //Deklarasi library SPI
#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
  }
}

Slave:
#include <SPI.h>
#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
  }
}

5. Video [kembali] 


 


 

a.      Percobaan 2 (SPI)

1.      Apa fungsi library SPI.h?

Jawab :

Fungsi menggunakan library SPI.h adalah agar kita bisa menggunakan function siap pakai yang ada di dalam library SPI.h sehingga function akan memudahkan kita dalam melakukan komunikasi SPI.

 

2.      Bagaimana jika pin SS tidak dihubungkan ?

Jawab :

Jika pin SS tidak dihubungkan maka ketika kita menggunakan lebih dari satu slave master tidak dapat mengidentifikasi slave mana yang akan dilakukan komunikasi, oleh karena itu kita perlu menghubungkan SS pada master ke salve.

 

3.      Jika pada push button (input) dan led (output) ditambahkan resistor 100k, bagaimana pengaruhnya terhadap jalan rangkaian ?

Jawab :

Jika ditambah resistor 100k, maka yang akan terjadi pada rangkaian tersebut adalah hambatan arus yang terlalu tinggi menyebabkan lampu LED tidak dapat menyala, karena bus button tidak cukup kuat untuk mengaktifkan lampu LED pada slave.

 

4.      Bisakah menggunakan banyak master ? jelaskan alasannya

Bisa, ketika kita menggunakan 2 master dan satu slave, maka master yang pertama bisa melakukan komunikasi dengan slave atau master yang ke dua juga berkomunikasi dengan salve, tapi kedua master tidak bisa melakukan komunikasi dengan slave di waktu yang bersamaan, karena SPI adalah komunikasi serial dan membutuhkan identifikasi alamat masing-masing device. Jika master secara bersamaan mengirimkan data ke slave maka akan terjadi bentrok data pada master dan slave.

 
HTML                 KLIK DISINI
Simulasi Proteus KLIK DISINI
Listing Program  MASTER
                            SLAVE 
Video                  KLIK DISINI  
DataSheet Arduino KLIK DISINI  
Library Arduino     KLIK DISINI            

Tidak ada komentar:

Posting Komentar