Percobaan I2C







Gambar 1 Resistor
Gambar 2. Potensiometer

Gambar 3. LED

Gambar 4. Arduino Uno

Flowchart Master

Flowchart Slave





 
//MASTER

#include <Wire.h>
#define SLAVE_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(SLAVE_ADDR);
 Wire.write(val);
 Wire.endTransmission();
 
}

//SLAVE

#include <Wire.h>
#define SLAVE_ADDR 9

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, HIGH);
  delay(br);
  digitalWrite(LED, LOW);
  delay(br);
}
 
//SLAVE

#include <Wire.h>
#define SLAVE_ADDR 9

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, HIGH);
  delay(br);
  digitalWrite(LED, LOW);
  delay(br);
}





Prinsip Kerja
     Rangkaian diatas merupakan rangkaian komunikasi I2C. Rangkaian tersebut terdiri dari 2 arduino yang berfungsi sebagai master dan slave. Pada komunikasi I2C dapat menggunakan lebih dari 1 slave. Pada rangkaian tersebut terdapat potensiometer yang dapat mengubah nilai tegangan yang diinginkan. Sinyal dari Potensio tersebut masuk ke pin A0 arduino master yang kemudian dilakukan perhitungan sesuai program. Data yang telah dihitung dikirim melalui Pin A4 sebagai pin data yang terhubung dengan A4 pada slave. Pin A5 merupakan pin clock. Lalu setelah data diterima oleh arduino slave output akan dikeluarkan oleh pin 13 yang kemudian diterima resistor lalu mengarah ke led lalu ke ground. Saat potensiometer tinggi maka delay pada led saat berkedip akan lebih lama dibandingkan saat resisstansi potensiometer rendah.

ANALISA PERCOBAAN 3 [I2C]:

1.     Analisa dengan mengubah rangkaian menjadi mengatur intensitas cahaya LED ?

Jawab :

Potensiometer merupakan sebuah resistor variabel yang nilai resistansinya dapat di atur dengan cara memutar tuasnya. Nilai resistansi pada potensiometer akan semakin besar jika diputar ke arah ground dan semakin kecil jika diputar ke arah vcc. Pada rangkaian ini potensiometer berpengaruh terhadap kecepatan motor. Semakin besar nilai potensiometer maka semakin kecil nilai resistansinya sehingga LED akan semakin terang, sebaliknya semakin kecil nilai potensiometer maka semakin besar nilai resistansinya sehingga LED menjadi lebih redup.

Pada saat tahanan potensio sebesar 100%



Dengan mengganti kodingan menjadi seperti dibawah ini

//SLAVE

 

#include <Wire.h>

#define SLAVE_ADDR 9

 

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, br);

  delay(200);

 

}


7. Download [kembali]
1. Video download
2. HTML  download
3. Rangkaian  download
4. List Program Master download
5. List Program Slave download















Tidak ada komentar:

Posting Komentar