a) Memahami prinsip kerja UART, SPI, dan I2C
b) Mengaplikasikan protokol komunikasi UART, SPI, dan I2C pada Arduino
b) Mengaplikasikan protokol komunikasi UART, SPI, dan I2C pada Arduino
1.1. Kondisi
Pada percobaan ini, kondisi yang diberikan adalah ganti potensiometer dengan pushbutton, ketika button ditekan LED menyala sedangkan ketika button tidak ditekan LED akan mati.
2. Hardware[Kembali]
-. Alat
a. Arduino
b. 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.c. LED
LED adalah suaatu semikonduktor yang memancarkan cahaya, LED mempunyai kecenderungan polarisasi. LED mempunyai kutub positif dan negatif (p-n) dan hanya akan menyala bila diberikan arus maju. Ini dikarenakan LED terbuat dari bahan semikonduktor yang hanya akan mengizinkan arus listrik mengalir ke satu arah dan tidak ke arah sebaliknya. Bila LED diberikan arus terbalik, hanya akan ada sedikit arus yang melewati LED. Ini menyebabkan LED tidak akan mengeluarkan emisi cahaya.
-. Bahan
a. Software Arduino IDE
Lingkungan Pengembangan Terpadu Arduino adalah aplikasi lintas platform yang ditulis dalam fungsi-fungsi dari C dan C ++. Ini digunakan untuk menulis dan mengunggah program ke papan Arduino yang kompatibel, tetapi juga, dengan bantuan core pihak ketiga, papan pengembangan vendor lainnya.
3. Rangkaian Percobaan[Kembali]
Pada percobaan ini, terdapat 2 buah arduino yaitu arduino master (kiri) dan arduino slave (kanan). Pada masing-masing arduino telah di berikan program yang akan dieksekusi pada saat simulasi dijalan kan. Setelah program dijalankan, apabila pushbutton ditekan makan button akan berlogika 1 atau high sehingga LED menyala. Ketika button ditekan kembali, maka button menjadi logika 0 atau low dan LED pun mati.
4. Listing Program[Kembali]
MASTER :
//MASTER
#include <Wire.h>
#define MASTER_ADDR 9
int analogPin = 0;
int val = 0;
void setup() {
Wire.begin();
}
void loop() {
delay(50);
val = map(analogRead(analogPin), 0, 1023, 255, 1);
Wire.beginTransmission(MASTER_ADDR);
Wire.write(val);
Wire.endTransmission();
}
SLAVE :
//SLAVE
#include <Wire.h>
#define SLAVE_ADDR
int LED = 13;
int rd;
int br;
void setup() {
pinMode(LED, OUTPUT);
Wire.begin(SLAVE_ADDR);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
Serial.println("I2C Slave demo");
}
void receiveEvent() {
rd = Wire.read();
Serial.println(rd);
}
void loop() {
delay(50);
br = map(rd, 1, 255, 100, 2000);
digitalWrite(LED, LOW);
delay(br);
digitalWrite(LED, HIGH);
delay(br);
}
4.1. Flowchart
5. Analisa[Kembali]
1). Apakah device master pada komunikasi ini mempunyai alamat/address?
Jawab :
Pada I2C, device master tidak memiliki alamat namun pada device slave memiliki alamat agar master dapat mengontrol salve tersebut. Alamat pada slave nantinya akan dipanggil oleh master berdasarkan program yang di tulis dan di eksekusi pada device master.
2). Apa yang terjadi jika address pada slave diganti menjadi 0x70?
Jawab :
Jika address pada slave diganti menjadi 0x70, maka master akan memanggil slave berdasarkan alamat yang dimilikinya. Pada alamat tersebut, terdapat 8 bit dimana 7 bit merupakan alamat dari slave dan 1 bit adalah Read/Write. Bit R/W tersebut adalah untuk memberitahukan kepada slave yang dituju tindakan apa yang akan dilakukan master terhadap slave. Jika master ingin membaca data atau read, maka bit R/W kondisi logic high jika master ingin menulis data atau write maka bit R/W kondisi logic low.
3). Apa fungsi sintax 'Wire.onReceive(receiveEvent)' pada slave?
Jawab :
Pada slave, sintax tersebut berfungsi untuk menerima data dari master. Pada program master, terdapat sintax 'Wire.beginTransmission' dimana master akan mengirim data kepada slave dengan alamat yang dituju dan untuk menerimanya, slave akan mendeklarasikan sintax tersebut untuk menerima data yang dikirim dari master lalu slave akan memanggil fungsi 'void receiveEvent' untuk mengolah data yang diterima.
6. Video[Kembali]
7. Link Download[Kembali]
Tidak ada komentar:
Posting Komentar