1. Hardware [Kembali]
A. LED
B. Push Button
2. Rangkaian Simulasi [Kembali]
3. Flowchart [Kembali]
4. Listing Program [Kembali]
A. I2C Master
//
// Menambahkan library wire
#include <Wire.h>
// Deklarasi Button
#define BUTTON 2
uint8_t _data;
void setup() {
// Konfigurasi button sebagai INPUT
pinMode(BUTTON, INPUT);
// Bergabung dengan I2C Bus
Wire.begin();
}
void loop() {
if (digitalRead(BUTTON) == LOW) {
// Mengirim byte Alamat (Alamat slave #8)
Wire.beginTransmission(8);
// Mengirim data (data = 1)
_data = 1;
Wire.write(_data);
// Berhenti mengirim
Wire.endTransmission();
} else {
// Mengirim byte Alamat (Alamat slave #8)
Wire.beginTransmission(8);
// Mengirim data (data = 0)
_data = 0;
Wire.write(_data);
// Berhenti mengirim
Wire.endTransmission();
}
}
//
B. I2C Slave
//
// Menambahkan library Wire
#include <Wire.h>
// Deklarasi LED
#define LED 2
// Data yang diterima Slave
uint8_t _data;
// Flag data telah diproses
bool proceed = true;
void setup() {
// Konfigurasi LED sebagai OUTPUT
pinMode(LED, OUTPUT);
// Bergabung dengan I2C Bus dengan alamat 8 (Desimal)
Wire.begin(8);
// Mengatur event ketike I2C Slave menerima data
Wire.onReceive(receiveEvent);
}
void loop() {
if(!proceed){
// Mengecek Data
if(_data == 1){
digitalWrite(LED, HIGH);
}else if(_data == 0){
digitalWrite(LED, LOW);
}
proceed = true;
}
}
// Fungsi untuk menghandel I2C receive event
void receiveEvent(int howMany) {
// Membaca data
_data = Wire.read();
proceed = false;
}
//
0 komentar:
Posting Komentar