TP 2 M3

 [KEMBALI KE MENU SEBELUMNYA]


DAFTAR ISI
1. Foto Hardware dan Diagram Blok
2. Prosedur Percobaan
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Kondisi
6. Video Simulasi
7. Link Download

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

    
Dalam rangkaian ini, dua Arduino berfungsi sebagai master dan slave, menggunakan komunikasi I2C untuk mengirim dan menerima pesan antara mereka. Master mengambil input dari keypad dan mengirimkannya ke slave, yang kemudian menampilkan pesan tersebut pada LCD.

Pada Arduino Master, komunikasi I2C diinisialisasi dengan Wire.begin(), menandakan bahwa Arduino ini bertindak sebagai master. Arduino Master terhubung dengan keypad, dan setiap kali tombol ditekan, karakter tersebut dikirim melalui I2C ke Arduino Slave.

Arduino Slave juga menginisialisasi komunikasi I2C dengan Wire.begin(9), menunjukkan bahwa Arduino ini bertindak sebagai slave dengan alamat I2C 9. Ketika data diterima dari master, fungsi receiveEvent dipanggil secara otomatis. Di dalam fungsi ini, karakter yang diterima dibaca dan ditambahkan ke variabel message. Jika panjang pesan melebihi 16 karakter, karakter pertama dipotong untuk menjaga panjang pesan dalam batas tersebut. Pesan kemudian ditampilkan pada LCD dengan memanggil displayMessage().

Dengan cara ini, data dapat dikirim dari Arduino Master ke Arduino Slave melalui I2C, dan Arduino Slave menampilkan pesan yang diterima pada LCD.

4. Flowchart dan Listing Program [Kembali]

Master Arduino:


Slave Arduino: 



Listing Program:

Master
#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



Komentar

Postingan populer dari blog ini

MODUL 1

TUGAS BESAR

MODUL 1 Up & Uc