Laporan Akhir Modul 3 Percobaan 3 Kondisi 1




1. Komponen[kembali]


Potensiometer

LED

 Resistor

Arduino

2. Rangkaian Simulasi[kembali]


    Prinsip Kerja:    
    Pada rangkaian percobaan di atas, arduino yang digunakan yaitu ATmega 1280, karena pada saat mencoba menggunakan UNO listing program tidak dapat dijalankan karena menggunakan library wire. pada rangkaian itu untuk input master itu menggunakn sebuah potensiometer yang kemudian dihubungkan ke pin Analog A0. Untuk A4 dan A5 master dihubungkan ke A4 dan A5 slave. Pada output itu dihubungkan ke pin 13 slave yang ouputnya berupa LED.

3. Flowchart[kembali]






4. Listing Program[kembali]

// MASTER
#include <Wire.h> //Deklarasi library Wire untuk komunikasi I2C
#define MASTER_ADDR 9 //Deklarasi alamat slave yang digunakan 0 - 127

int analogPin = 0; //Deklarasi nilai analogPin = 0
int val = 0; // Deklarasi variable = 0

void setup() {
  Wire.begin(); // siap untuk mengirimkan data
}

void loop() {
delay (50);
  val = map(analogRead(analogPin), 0, 1023, 255, 1); //Mapping nilai dari pembacaan ADC dari 0-1023 menjadi pwm 255-1 dan dimasukkan ke variable val
 
  Wire.beginTransmission(MASTER_ADDR); //siap mulai mengirimkan data ke alamat slave yang dituju
  Wire.write(val); // menulis data pada slave sesuai nilai val
  Wire.endTransmission(); // mengakhiri mengirimkan data pada slave
}

//SLAVE
#include <Wire.h> //Deklarasi library Wire untuk komunikasi I2C
#define SLAVE_ADDR 9 //Deklarasi alamat slave yang digunakan 0 - 127

int LED = 13; //Deklarasi pin 13 terhubung ke LED
int rd; //Deklarasi variable rd
int br; //Deklarasi variable br

void setup() {
  pinMode(LED, OUTPUT); //Deklarasi LED sebagai Output
  Wire.begin(SLAVE_ADDR); //Inisialisasi library wire alamat slave Untuk memulai
  Wire.onReceive(receiveEvent); //Memanggil fungsi ketika slave mendapat transmisi dari master

Serial.begin(9600); //set baud rate 9600
Serial.println("I2C Slave demo"); //Mencetak data
}

void receiveEvent(){  //Deklarasi variable receiveEvent
  rd = Wire.read(); // Memasukkan data pembacaan ke variable rd
  Serial.println(rd); //Mencetak nilai rd
}

void loop() {
delay(50);
br = map(rd, 1, 255, 100, 2000); //Mapping nilai dari pembacaan nilai variable rd dari range 1-255 menjadi 100-2000 dan dimasukkan ke variable br
if (rd == 255){  //LED berlogika HIGH pada saat nilai rd = 255
digitalWrite(LED, HIGH); //LED menyala
  delay(br);
}
if (rd == 1) { //LED berlogika LOW pada saat nilai rd = 0
  digitalWrite(LED, LOW); //LED mati
  delay(rd);
}
}

5. Video[kembali]



6. Kondisi[kembali]

1. Jelaskan bagaimana cara menghubungkan rangkaian I2C dengan slave lebih dari satu, dan jelaskan bagaimana komunikasi antara master dan slavenya.

Jawab:

Rangkaian I2C untuk komunikasinya ditentukan dengan start dan stop, untuk pengiriman data ditambahkan juga odd parity atau even parity. Jika slave lebih dari satu maka untuk pin SCLK pada master dihubungkan parallel dengan slave-slave yang lainnya.

7. Link Download[kembali]

    Download HTML
    Download Rangkaian
    Download Listing Master
    Download Listing Slave 
    Download Video

Tidak ada komentar:

Posting Komentar