1. Tujuan[ K E M B A L I] - Memahami prinsip kerja UART, SPI, dan I2C
- Mengaplikasikan protokol komunikasi UART, SPI, dan I2C pada Arduino
Kondisi:
Ganti potensiometer dengan push button dan led dengan motor DC. Jika push button ditekan maka motor berputar searah jarum jam. Dan jika push button dilepas maka motor berhenti.
Motor DC
Arduino
Driver Motor L293D
Push Button
MASTER
#include <Wire.h>
#define BUTTON A0
#define MASTER_ADDR 9
void setup() {
Wire.begin();
pinMode(BUTTON, INPUT);
}
void loop() {
delay(50);
int button_status = digitalRead(BUTTON);
Wire.beginTransmission(MASTER_ADDR);
Wire.write(button_status);
Wire.endTransmission();
}
SLAVE
#include <Wire.h>
#define SLAVE_ADDR 9
#define in1 9
#define in2 10
int rd;
void setup() {
pinMode(in1, OUTPUT);
pinMode(in2, 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() {
if (rd == LOW) {
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
} else {
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
}
}
1. Apakah device master pada komunikasi ini
mempunyai alamat/address?
Device master memiliki adress yang dideklarasikan dengan
syntax #define MASTER_ADDR 9 pada listing program device master.
2. Apa yang terjadi jika address pada slave diganti
menjadi 0x70?
Jika address pada slave diganti menjadi 0x70 maka komunikasi
antar 2 device tidak berjalan karena alamat pada device master dan slave
berbeda.
3. Apa fungsi sintax 'Wire.onReceive(receiveEvent)'
pada slave?
Wire.onReceive berfungsi untuk mendaftarkan fungsi yang akan
dipanggil ketika perangkat slave menerima transmisi dari master. Sedangkan
parameter receiveEvent merupakan fungsi yang akan dipanggil ketika slave menerima
data.
Tidak ada komentar:
Posting Komentar