Tugas Pendahuluan 2 Modul III

 



Percobaan 3

 Komunikasi I2C Menggunakan Arduino

1. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno


        2. Keypad




      3. LCD

        4. Potensiometer




       5. Power Supply


     6. Ground




Diagram Blok:



2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino 
+ jalankan program pada simulasi dan cobakan dengan modul




Prinsip Kerja

    Pada percobaan kali ini kita menggunakan Keypad 4*4 sebagai input pada pin 3-10 arduino master, 2 buah arduino uno satu berperan sebagai master dan satunya sebagai slave lalu yang terakhir yaitu sebuah LCD sebagai output yang terhubung pada pin 2, 3, 4, 5, 11 dan 12 pada rangkaian ini.  Keduan arduino uno tersebut tehubung melalui sistem komunikasi I2C (Inter Intergrated Circuit).

   Pada sistem komunikasi UART ini merupakan protokol komunikasi data serial secara synchronous yang menggunakan 2 pin(SDA dan SCL) untuk komunikasinya. Komunikasi ini juga menggunakan transmisi secara Half-Duplex yang merupakan komunikasi satu jalur yang bisa menerima dan mengirim data secara bergantian serta membutuhkan clock kemudian sistem komunikasi ini juga support terhadap sistem multi master dan multi slave.

    Pada percobaan ini kita memiliki kondisi yang telah ditentukan yang mana Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami scroll ke kanan pada kolom pertama. pertama pada arduino master akan menghubungkan dirinya/syncronize dengan arduino slave yang dipilih untuk percobaan kali ini kita menggunakan slave alamat 9 yang mana disaat telah terhubung maka pada arduino slave yang terhubung pada LCD akan menampilkan key yang ditekan pada keypad tepat di kolom 1 dari LCD serta dengan kondisi angka atau huruf selanjutnya akan scroll ke kanan. 

4. Flowchart dan Listing Program [Kembali]

Master Arduino:




Slave Arduino: 





Listing Program:

Master
#include <Wire.h>
#include <Keypad.h>

const byte ROWS = 4; // Jumlah baris pada keypad
const byte COLS = 4; // Jumlah kolom pada keypad

// Matriks keypad
char keys[ROWS][COLS] = {
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'*','0','#','D'}
};

// Pin yang terhubung ke baris keypad
byte rowPins[ROWS] = {7, 8, 9, 10};

// Pin yang terhubung ke kolom keypad
byte colPins[COLS] = {3, 4, 5, 6};

// Membuat objek keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);
  Wire.begin(); // Mulai komunikasi I2C sebagai master
}

void loop() {
  char key = keypad.getKey(); // Membaca tombol yang ditekan pada keypad
 
  if (key != NO_KEY) { // Jika tombol ditekan
    Serial.println(key); // Tampilkan tombol yang ditekan di serial monitor
    Wire.beginTransmission(9); // Mulai transmisi ke slave dengan alamat 9
    Wire.write(key); // Kirim tombol yang ditekan ke slave
    Wire.endTransmission(); // Akhiri transmisi
    delay(100); // Tunda sebentar untuk menghindari bouncing pada tombol
  }
}


Slave

#include <Wire.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inisialisasi objek LCD dengan pin yang terhubung

String message = ""; // Pesan yang akan ditampilkan di LCD

void setup() {
  lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
  Wire.begin(9); // Mulai komunikasi I2C sebagai slave dengan alamat 9
  Wire.onReceive(receiveEvent); // Panggil fungsi receiveEvent() saat menerima data dari master
}

void loop() {
  // Tidak ada yang perlu dilakukan di loop()
}

void receiveEvent(int byteCount) {
  while (Wire.available()) {
    char receivedChar = Wire.read(); // Baca karakter yang diterima dari master
    message += receivedChar; // Tambahkan karakter ke pesan
    if (message.length() > 16) { // Jika panjang pesan lebih dari 16 karakter
      message = message.substring(1); // Potong karakter pertama dari pesan
    }
    displayMessage(); // Tampilkan pesan pada LCD
  }
}

void displayMessage() {
  lcd.clear(); // Bersihkan layar LCD
  lcd.setCursor(0, 0); // Set posisi kursor di baris pertama
  lcd.print(message); // Tampilkan pesan di LCD
}


5. Kondisi [Kembali]

    Pada kondisi 6 dari percobaan 3, Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami scroll ke kanan pada kolom pertama



᭒ HTML↠ klik disini

Rangkaian ↠ klik disini

᭒ Program ↠ klik disini

᭒ Video Percobaan↠ klik disini

᭒ Datasheet Arduino↠ klik disini

᭒ Datasheet LCD↠ klik disini

᭒ Datasheet Keypad↠ klik disini

᭒ Datasheet Potensiometer↠ klik disini

Subscribe to receive free email updates:

0 Response to "Tugas Pendahuluan 2 Modul III"

Posting Komentar