M3_Tugas Pendahuluan_P3K3


                                              [KEMBALI KE MENU SEBELUMNYA]



    Percobaan 3(I2C) Kondisi 3
Rangkailah 2 buah led, kemudian buatlah keduanya menyala bergantian ketika potensiometer 0%-20%.


2. Gambar Rangkaian Simulasi [back]





3.Video Simulasi [back]



4.Prinsip Kerja[back]

Prinsip Rangkaian 
Ketika Potensiometer diperkecil maka kecepatan hidup/mati dari LED pada slave akan semakin lambat hal ini dikarenakan data analog yang terbaca kecil sehingga ketika dikonversikan ke digital dan dikirim ke slave juga menjadi kecil. akibatnya durasi LED menyala juga semakin kecil

I2C adalah protokol komunikasi serial yang hanya membutuhkan dua jalur sinyal. Itu dirancang untuk komunikasi antara chip pada PCB. Pengiriman/penerimaan informasi/data secara serial dengan mempergunakan data line (SDA = Serial Data) dan sebuah sumber clock (SCL = Serial Clock).
I2C aktif ketika Start kondisinya terpenuhi kemudian diakan membaca alamat dari slave yang digunakan (B6 - B0) dan operasi yang dilakukan pada slave tersebut apakah Read/Write. kemudian menentukan ACK/NACK nya ketika ACK = 0 maka data akan dikirimkan ke slave lalu mengulang membaca ACK kembali. ketika ACK = 1 maka data tidak dikirimkan dan komunikasi I2C dihentikan




CODINGAN
// Master
//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();
}

Penjelasan Codingan :

Pertama Kita Deklarasikan library wire.h dan Pin-pin yang akan dihubungkan ke arduino nantinya dimana pin nya adalah A0 dihubungkan ke potensiometer. lalu pada void setup di lakukan pemanggilan fungsi wire.begin().

Libray wire.h ini berfungsi untuk mengaktifkan komunikasi serial I2C pada arduino. sehingga tidak perlu mendeklarasikan atau mengatur pin pada arduino sebagai jalur komunikasi nya. Library ini menggunakan alamat 7 bit. jika kita memakai alamat 8 bit, maka kita akan menggeser nilai 1 bit ke kanan.

Fungsi wire.begin() adalah untuk memulai komunikasi pada I2C. biasanya di sini di lihat programnya apakah dia bekerja sebagai master/slave. jika slave maka dalam fungsi akan menjadi wire.begin(alamat slave).

void loop digunakan dalam arduino IDE untuk menjalankan perintah didalamnya secara berulang-ulang,dalam void loop ada variabel val yang nilainya merupakan konversi (map) dari pin analog (0-1023) menjadi pin digital (0-255)

wire.beginTransmission(SLAVE_ADDR) digunakan untuk mentransmisikan data pada arduino dengan tujuan address dari slave yaitu slave ke 9

wire.write(val) digunakan untuk mencetak nilai data dari variabel val pada slave

wire.endTransmission() digunakan untuk mengakhiri komunikasi I2C

// Slave

//SLAVE

#include <Wire.h>
#define SLAVE_ADDR 9

int LED1 =   13;
int LED2 = 11;
int rd;
int br;

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  Wire.begin(SLAVE_ADDR);
  Wire.onReceive(receiveEvent);

  Serial.begin(9600);
  Serial.println("I2C Slave demo");

}

void receiveEvent(int) {
  rd = Wire.read();
  Serial.println(rd);
}
void loop() {
  delay(50);

  br = map(rd, 1, 255, 100, 2000);
    LEDon();
    LED1on();
}

void LEDon(){
  digitalWrite(LED1, HIGH);
  delay(br);
  digitalWrite(LED1, LOW);
  delay(br);
}

void LED1on(){
  digitalWrite(LED2, HIGH);
  delay(br);
  digitalWrite(LED2, LOW);
  delay(br);
}


Penjelasan Codingan :

Pertama Kita Deklarasikan library wire.h dan Pin-pin yang akan dihubungkan ke arduino nantinya dimana pin nya adalah A0 dihubungkan ke potensiometer. lalu pada void setup di lakukan pemanggilan fungsi wire.begin(),pinMode(),serial.begin(),wire.onReceive() dan serial.println().

Libray wire.h ini berfungsi untuk mengaktifkan komunikasi serial I2C pada arduino. sehingga tidak perlu mendeklarasikan atau mengatur pin pada arduino sebagai jalur komunikasi nya. Library ini menggunakan alamat 7 bit. jika kita memakai alamat 8 bit, maka kita akan menggeser nilai 1 bit ke kanan.

Fungsi pinMode() pada arduino adalah sebuah perintah yang fungsinya untuk mengkonfigurasi pin tertentu agar bekerja menjadi sebuah input atau output. pinMode() biasanya digunakan pada void setup() untuk melakukan konfigurasi pada suatu pin, di dalam pemrograman arduino perintah pinMode() akan sering kamu jumpai dan gunakan. dari codingan kita ingin menjadikan pin LED1 dan LED2 sebagai mode Output/keluaran

Fungsi wire.begin() adalah untuk memulai komunikasi pada I2C. biasanya di sini di lihat programnya apakah dia bekerja sebagai master/slave. jika slave maka dalam fungsi akan menjadi wire.begin(alamat slave).

Fungsi wire,onReceive() adalah menerima data yang dikirimkan oleh master dan Fungsi Serial.println() digunakan untuk mencetak data dengan kecepatan data 9600 bps sesuai yang di deklarasikan di serial.begin()

void loop digunakan dalam arduino IDE untuk menjalankan perintah didalamnya secara berulang-ulang,dalam void loop ada variabel br yang mengkonversi nilai rd(nilai dari master berupa 0-255) menjadi detik (100 - 2000). kemudian memanggil fungsi LEDon() dan LED1on() dimana fungsi ini berisikan perintah untuk menghidupkan LED


5. File Download [back]

Download HTML Link Download
Download Simulasi Proteus Link Download
Download Program Master Link Download
Download Program Slave Link Download
Download Library Link Download
Download Video Link Download
Dataheet LED Link Download
Dataheet Potensiometer Link Download
Datasheet Arduino UNO Link Download

Tidak ada komentar:

Posting Komentar

Muhammad Sukry

Bahan Presenstasi Ini dibuat untuk  Mata Kuliah Mikroprocessor dan Mikrocontroller Semester Ganjil 2022-2023 Oleh : Muhammad Sukry 201095104...