Egi Rahman 2110952042

.

MODUL 3 LA 2




Modul 3
Percobaan 3. Komunikasi I2C Menggunakan Arduino

1. Prosedur
[Kembali]
 1. Rangkai komponen sesuai percobaan dan yang dipilih.

2. Buat program menggunakan Arduino IDE.

3. Transfer program yang telah dibuat ke Arduino Uno.

4. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.

5. Proses selesai setelah uji coba berhasil dilakukan.

2. Hardware dan Diagram Blok [Kembali]
a. Hardware
1. Arduino uno
Spesifikasi Arduino Uno:




2. LCD

Spesifikasi LCD:



3. 
Keypad



4.   Kabel Jumper



b. diagram blok:



3. Rangkaian Percobaan dan Prinsip Kerja [Kembali]
a. Rangkaian Percobaan



b. Prinsip Kerja
    Dalam percobaan 3 ini, dua Arduino menggunakan protokol I2C untuk berkomunikasi. Arduino master bertindak sebagai pengirim perintah, yang mendapatkan input dari keypad yang terhubung. Sementara Arduino slave bertugas menerima perintah dan mengeksekusinya, menampilkan outputnya pada LCD 16x2. Saat pengguna menekan tombol pada keypad, Arduino master mendeteksi input tersebut dan mengirimkan karakter yang sesuai melalui saluran komunikasi I2C. Proses dimulai dengan inisialisasi menggunakan fungsi Wire.begin(). Pada Arduino slave, LCD dikendalikan menggunakan library LiquidCrystal, dan Arduino tersebut bergabung dengan bus I2C dengan alamat 4. Ketika data diterima oleh Arduino slave, LCD membersihkan tampilan dan menampilkan karakter yang diterima dari Arduino master. Komunikasi ini terjadi berulang kali, memungkinkan tampilan LCD merespons setiap input yang diberikan melalui keypad pada Arduino master.

4. Flowcharth dan Listing Program [Kembali]

a. Flowcharth

                                                                                        --------Master ----------



                                                                                        ---------Slave ----------


b. Listing Program

                                                                                        ----------Master---------
// Memasukkan library yang dibutuhkan
#include <Keypad.h>
#include <Wire.h>

// Mendefinisikan jumlah baris dan kolom pada keypad
const byte ROWS = 4;
const byte COLS = 3;

// Membuat array yang berisi karakter-karakter pada keypad
char keys[ROWS][COLS] = {
 {'1', '2', '3'}, // Baris pertama pada keypad
 {'4', '5', '6'}, // Baris kedua pada keypad
 {'7', '8', '9'}, // Baris ketiga pada keypad
 {'*', '0', '#'}, // Baris keempat pada keypad
};

// Mendefinisikan pin-pin untuk baris pada Arduino
char rowPins[ROWS] = {9, 8, 7, 6};

// Mendefinisikan pin-pin untuk kolom pada Arduino
char colPins[COLS] = {5, 4, 3};

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

void setup()
{
 Wire.begin(); // Bergabung dengan bus I2C sebagai master
}

void loop(){
 
 char key = keypad.getKey(); // Mendapatkan tombol yang ditekan
 
 if (key) { // Jika ada tombol yang ditekan
 Wire.beginTransmission(4); // Mulai transmisi ke perangkat dengan alamat I2C #4
 Wire.write(key); // Mengirim karakter tombol yang ditekan
 Wire.endTransmission(); // Mengakhiri transmisi
 }
}

                                                                                        -------Slave--------


// Memasukkan library yang dibutuhkan untuk LCD dan komunikasi I2C
#include <LiquidCrystal.h>
#include <Wire.h>

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

void setup()
{
 lcd.begin(16, 2); // Menginisialisasi LCD dengan ukuran 16 kolom dan 2 baris
 Wire.begin(4); // Bergabung dengan bus I2C dengan alamat #4 sebagai slave
 Wire.onReceive(receiveEvent); // Mendaftarkan fungsi receiveEvent sebagai event handler ketika data diterima
 Serial.begin(9600); // Memulai komunikasi serial untuk output
}

void loop()
{
 delay(100); // Loop utama hanya memiliki delay, pemrosesan dilakukan di receiveEvent
}

// Fungsi yang dijalankan setiap kali data diterima dari master
void receiveEvent(int howMany)
{
 char c = Wire.read(); // Menerima byte sebagai karakter
 Serial.println(c); // Mencetak karakter ke serial monitor
 lcd.clear(); // Membersihkan layar LCD
 lcd.setCursor(0, 0); // Menyetel kursor ke posisi awal
 lcd.print(c); // Menampilkan karakter pada LCD
 delay(100); // Delay untuk stabilitas
}

5. Kondisi [Kembali]
Modul 3 Percobaan 1

6. Video Demo[Kembali]


7. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet lcd Klik disini









0 komentar:

Posting Komentar

Blogger news

Blogger templates