Tugas Pendahuluan M3 2(Percobaan 3 Kondisi 1)




1. Kondisi
[Kembali]
Kondisi yang didapat pada percobaan kali ini adalah kondisi 1, yakni:
Buatlah LED menyala ketika potensiometer 0% dan led padam ketika potensiometer mencapai nilai 100%

2. Gambar rangkaian simulasi [Kembali]
Gambar rangkaian simulasi adalah sebagai berikut

Gambar rangkaian simulasi saat pada keadaan "OFF"

Gambar 1. Rangkaian ketika OFF

Gambar rangkaian simulasi pada saat keadaan "ON"

Gambar 2. Rangkaian ketika ON

3. Video simulasi [Kembali]
Video penjelasan rangkaian simulasi dapat dilihat dibawah ini:



4. Prinsip kerja Rangkaian [Kembali]
a). Prinsip kerja rangkaian 
Tujuan dari dilakukan percobaan ini adalah menerapkan protokol komunikasi I2C dengan menggunakan arduino. Protokol I2C hanya menggunakan dua buah kabel yang menghubungkan antara device - devicenya, yakni dengan kabel SCL dan SDA. Pada arduino sendiri kabel ini terletak pada pin A4 dan A5.

Pada bagian master digunakan input dari variasi tegangan output potensiometer yang dihubungkan ke pin A0 untuk mengatur seberapa lama LED di bagian slave akan berkedip. Sementara untuk outputnya (pada slave) adalah sebuah LED yang terhubung ke pin digital 13.

b). Alur kodingan

CODINGAN MASTER

//MASTER

#include<Wire.h>
#define MASTER_ADDR 9

int analogPin = 0;
int val = 0;

void setup() {
  // put your setup code here, to run once:
  Wire.begin();

}

void loop() {
  // put your main code here, to run repeatedly:
  delay(50);
  val = map(analogRead(analogPin), 0, 1023, 255, 1);

  Wire.beginTransmission(MASTER_ADDR);
  Wire.write(val);
  Wire.endTransmission();
}

CODINGAN SLAVE

//SLAVE
#include<Wire.h>
#define SLAVE_ADDR 9

int LED = 13;
int rd; 
int br;

void setup() {
  // put your setup code here, to run once:
  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() {
  // put your main code here, to run repeatedly:
  delay(50);

  br = map(rd, 1, 255, 100, 2000);
  if (br == 100)
  {
    digitalWrite(LED, LOW);
  }

  else if(br == 2000)
  {
    digitalWrite(LED, HIGH);
  }

  else
  {
    digitalWrite(LED, HIGH);
    delay(br);
    digitalWrite(LED, LOW);
    delay(br);
  }
  
}

Penjelasan codingan master
Sebelum masuk ke void setup pertama dilakukan di program adalah mengimport library wire.h yakni sebuah library yang memungkinkan kita untuk menggunakan protokol komunikasi I2C, lalu mendekarasikan pin master ADDR dengan pin 9. Lalu dibawahnya mendeklarasikan dua buah variabel yakni analog pin dan val.

Lalu masuk ke bagian void setup, pada bagian ini tidak banyak kodingan, yang perlu dilakukan hanyalah menginisiasikan library wire agar bisa digunakan dengan menggunakan perintah Wire.begin().

Lalu masuk kedalam bagian program inti yakni bagian void loop. Untuk kodingan master juga tidak terlalu banyak. Bagian ini dimulai dengan memberikan delay sebesar 50 ms, lalu memapping (mengkslaskan) kembali nilai yang dibaca dari potensiometer yang awalnya memiliki skala dari 0 sampai 1023 (ADC 10 bit) diskalakan ke nilai 1 sampai 255. lalu dimulai transfer data melalui MASTER ADDR, dan menulis nilai dari hasil mapping tersebut, setelah menulis nilainya, kemudian transmisi data dihentikan dengan perintah Wire.endTransmission().

Penjelasan codingan slave
Sebelum masuk ke void setup pertama dilakukan di program adalah mengimport library wire.h yakni sebuah library yang memungkinkan kita untuk menggunakan protokol komunikasi I2C, lalu mendekarasikan pin SLAVE_ADDR dengan pin 9. Lalu variabel yang akan digunakan pada program serta pin-pinnya seperti pin 13 LED, variabel rd dan br

Kemudian masuk kedalam bagian void setup, bada bagian ini terdapat beberapa hal yang harus dilakukan, yang pertama adalah menginisiasikan pin LED dengan mode output, menginisasikan transmisi dengan menggunakan perintah wire begin, lalu perintah wire on revceive. Selain itu, juga diinisiasikan juga serial monitor dengan nilai baud rate 9600 dan dirpint text "I2C slave demo". 

Dikarenakan pada perintah wire on receive juga menggunakan fungsi, maka perlu dijelaskan kegunaan dari fungsi tersebut. Fungsi ini bersifat void sehingga tidak mengembalikan nilai apapun, kegunaan dari fungsi ini adalah membaca nilai hasil pengiriman serial kemudian memasukkannya kedalam variabel rd, lalu memprint hasil pembacaan tersebut

Pada bagian void loop, dilakukan delay sebesar 50 ms untuk setiap perulangannya, lalu variabel br diskalakan dengan variabel input rd dari yang awalnya memiliki skala 1- 255 diubah menjadi skala 100 - 2000. lalu sesuai kondisi (apabila potensiometer 100 % LED mati, jika 0% LED hidup, dan apabila diantarnya LED kedap-kedip dengan delay sesuai dengan hasil pembacaan potensiometer tersebut).


5. Link download [Kembali]

Tidak ada komentar:

Posting Komentar

Mata kuliah Elektronika Kelas A  Semester Genap Th.2021   DISUSUN OLEH :   MUHAMMAD RIZIEQ RIZALDI   2010952031     DO...