Modul 3 : Laporan Akhir 2



PERCOBAAN 3



1. Jurnal[Kembali]

Pin 4 slave dan master dilepas kemudian pin 5 slave dan master dilepas

2. Alat dan Bahan[Kembali]
  1. Modul Arduino


  2. LED


  3. Resistor


  4. Jumper



  5. Push Botton


  6. Potensiometer
3. Rangkaian Simulasi[Kembali]



4. Prinsip Kerja Rangkaian[Kembali]

Listing program:
//Master
#include <Wire.h>
#define MASTER_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(MASTER_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);
}

    Terdapat 2 program yang digunakan pada modul ini, program master dan slave. pada program master, bagian header nya di isi  deklarasi variabel analogpin = 0, val = 0,  dan librari wire. Pada bagian set up,  fungsi wire.begin() dideklarasi untuk memulai komunikasi. Pada bagian loop, val di isi dengan fungsi map(analogRead(analogPin), 0, 1023, 255, 1) yang mana akan membaca secara analog , memutar potensiometer ke kanan akan menghasilkan data yang berubah munuju 255 jika kekiri data berubah menuju 1, kemudian fungsi Wire.beginTransmission(MASTER_ADDR) digunakan untuk memulai transfer varibel val yang telah diisi oleh data dari  pembacaan pin analog dari master ke slave dari . kemudian fungsi Wire.beginTransmission(MASTER_ADDR) akan mengakhiri proses transfer data.
    Pada program slave, bagian header nya di isi dengan deklarasi pin 13 untuk menghubungkan  LED dengan arduino, deklarasi variabel rd dan br dan library wire. Pada bagian set up, fungsi pinmode() dan serial.begin() dideklarasikan untuk memberikan suatu nilai logika pada LED dan mengatur kecepatan penerimaan data sebesar 9600 bps dan fungsi-fungsi terkait untuk menggunakan library wire seperti Wire.begin(SLAVE_ADDR) dan
Wire.onReceive(receiveEvent). lalu terdapat bagian receiveevent dimana mana bagian ini variabel rd disi oleh fungsi wire.read dan penyetakan nilai rd. Pada bagian loop, variabel br di isi oleh fungsi  map(rd, 1, 255, 100, 2000) dan digitalwrite digunakan untuk menghidupkan dan mematikan LED dimana delay diantaranya bernilai variabel br sehingga lama kedipan LED akan bergantung pada variabel br yang mana merupkan hasil pembacaaan transfer data dari master ke slave. LED akan berkedip dari cepat menjadi lambat jika variabel br memeliki nilai yang berubah dari 1 hingga 255

5. Video Rangkaian[Kembali]



6. Analisa[Kembali]

1. Bagaimana output yang dihasilkan jika kita memutar potensio searah jarum jam maupun berlawanan arah jarum jam? Bagaimana pembacaan pada serial monitor jika potensiometernya diputar?
     Ketika memutar potensiometer searah jarum jam, LEd akan berkedip dengan delay yang semakin lama seangkan ketika memutar potensiometer berlawana arah jarum jam, Led akan berkedip dengan delay yang demakin cepat. Serial monitor akan menampilkan bilangan desimal dari 1 - 255 dimana jika potensiometer searah jarum jam data akan berubah-ubah menuju 255 dan jika diputar berlawan arah jarum jam data akan berubah-ubah menuju 1.

2. Apabila salah satu pin I2C dicabut, baik SDA maupun SCL dicabut, bagaimana output yang dihasilkan? Apakah data tetap terkirim? Mengapa demikian?
     saat SDA ataupn pin SCL dicabut tidak akan terjadi transfer data, namun ketika pin SCL atau SDA dicabut saat proses transfer data, data terakhir yang telah terkirim dari master ke slave akan tetap diproes oleh slave sehingga LES akan tetap berkedip namun delay kedipnya tidak dapat diubah sehingga akan teteap berkedip namun dengan kecepatan sesuai data yang masuk terakhir sebelum pencabutan pin SDA atau SCl. Data tidak dapat dikirmkan lagi karena pin SCL berfungsi sebgai clock yang digunakan untu proses transfer data dan pin SDA untuk memilih alamat dan slave sehingga ketika salah satu pin tersebut dicabut data tidak akan dapat dikirim.

7. Link Download[Kembali]
  1. HTML [disini]
  2. Video [disini]
  3. Datasheet LED [disini]
  4. Datasheet Button [disini]
  5. Datasheet  Arduino Uno [disini]