Laporan Akhir 2 Modul 3





1. Komponen [kembali]

Gambar 1. Komponen Percobaan 3 (Arduino)


Gambar 2. Komponen Percobaan 3 (LED)


Gambar 3. Komponen Percobaan 3 (Potensiometer)





2. Rangkaian Simulasi [kembali]

       
Gambar 4. Rangkaian Percobaan 3



3. Flowchart [kembali]

Gambar 5. Flowchart Master



Gambar 6. Flowchart Slave

4. Listing Program  [kembali]

Listing Master :
//MASTER

#include <Wire.h>  //Deklarasi library Wire
#define SLAVE_ADDR 9  //Deklarasi pin 9 untuk alamat slave

int analogPin = 0;  //Deklarasi nilai analogPin sama dengan 0
int val = 0;  //Deklarasi nilai variabel val adalah 0

void setup() {  //Merupakan fungsi yang dieksekusi sekali
  Wire.begin();  //Inisiasi library Wire
}

void loop() {  //Merupakan fungsi yang dieksekusi berulang atau looping
 delay(50); //Penundaan eksekusi selama 50 ms
 val = map(analogRead(analogPin), 0, 1023, 255, 1); //Mengubah atau mapping nilai dari pembacaan analog dari range 0-1023 menjadi 255-1 dan dimasukkan ke variabel val
 
 Wire.beginTransmission(SLAVE_ADDR);  //Memulai transmisi data ke alamat slave yang dituju
 Wire.write(val);  //Menulis data pada slave
 Wire.endTransmission();  //Mengakhiri transmisi data ke slave
 
}


Listing Slave :
//SLAVE

#include <Wire.h>  //Deklarasi library Wire
#define SLAVE_ADDR 9  //Deklarasi pin 9 milik alamat slave

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

void setup() {  //Fungsi ini dieksekusi sekali
  pinMode(LED, OUTPUT);  //Deklarasi LED sebagai Output
  Wire.begin(SLAVE_ADDR);  //Inisiasi library Wire dan Alamat Slave
  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 variabel receiveEvent
  rd = Wire.read();  //Memasukkan data pembacaan ke variabel rd
  Serial.println(rd);  //Mencetak nilai rd
}
void loop() {  //Fungsi yang dieksekusi berulang atau looping
  delay(50);  //Mendelay eksekusi 50 ms

  br = map(rd, 1, 255, 100, 2000);  // //Mengubah atau mapping nilai variabel rd dari range 1-255 menjadi 1000-2000 dan dimasukkan ke variabel br

  digitalWrite(LED, HIGH);  //LED diberi logika 1 sehingga LED menyala
  delay(br);  //Eksekusi program delay selama br
  digitalWrite(LED, LOW);  //LED diberi logika 0 sehingga LED mati
  delay(br);  //Eksekusi program delay selama br
}


5. Video [kembali]





6. Analisa [kembali]

1.             Apabila ada tambahan slave, bagaimana cara master membedakan satu slave dengan slave lainnya pada i2C pada saat berkomunikasi? Apakah pada bagian program, atau rangkaian, atau keduanya ?

Ø   Apabila ada tambahan slave, komunikasi pada I2C sama dengan SPI yaitu menghubungkan pin-pin slave secara parallel ke pin-pin master. Agar tidak ada terjadinya tabrakan data atau error pada saat pengiriman data maka addres atau alamat pada slave-slave dibedakan di dalam program.


7. Link Download [kembali]
  • File HTML                           [Download]
  • File Rangkaian                     [Download]
  • Video Simulasi                     [Download]
  • Listing Program (Master)     [Download
  • Listing Program (Slave)       [Download

Tidak ada komentar:

Posting Komentar