Laporan Akhir 2 Modul 3


Percobaan III

Komunikasi I2C Menggunakan Arduino



1. Prosedur [Kembali]

    • Rangkailah seperti rangkaian berikut
    • Buka Arduino IDE dan masukan listing program
    • Upload program ke arduino master dan arduino slave
    • Pilih tombol yang ingin ditekan dan amati keluarannya pada LCD



Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno

    2. Keypad


    3. LCD


    4. Kabel jumper

    5. Breadboard


   


Diagram Blok:


  •         Prinsip Kerja:

         Dalam percobaan 3 kondisi 2, digunakan dua Arduino yang berperan sebagai master dan slave. Arduino master bertugas mengirim data yang dimasukkan melalui keypad, sementara Arduino slave bertugas menerima data tersebut dan menampilkannya di LCD. Komunikasi antar kedua Arduino dilakukan melalui protokol I2C (Inter Integrated Circuit), yang memfasilitasi komunikasi digital antara mikrokontroler melalui pin SDA dan SCL.

    Pada Arduino master, karakter yang dimasukkan dari keypad dikirim ke Arduino slave melalui I2C. Saat tombol 1 hingga 9 pada keypad ditekan, karakter tersebut akan ditampilkan berurutan sebagai angka 1 hingga 9 pada LCD. Arduino master dan slave terhubung secara otomatis melalui fungsi 'Wire.begin()', dan setiap pesan yang dikirimkan dari keypad pada master akan ditampilkan pada LCD oleh slave.
     
Flowchart:
    Master

        Slave
Listing Program:

  • Arduino Master
//Master Arduino
#include <Keypad.h>
#include <Wire.h> 
 
const byte ROWS = 4;
const byte COLS = 3; 
 
char keys[ROWS][COLS] = {
 {'1', '2', '3'},
 {'4', '5', '6'},
 {'7', '8', '9'},
 {'*', '0', '#'},
}; 
 
char rowPins[ROWS] = {9, 8, 7, 6};
char colPins[COLS] = {5, 4, 3};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup()
{
 Wire.begin(); // join i2c bus (address optional for master)
 
//byte x = 0;
void loop(){

 char key = keypad.getKey();

 if (key) {
 Wire.beginTransmission(4); // transmit to device #4
 Wire.write(key);
 Wire.endTransmission(); // stop transmitting
 }
}

  • Arduino Slave
 //Slave Arduino
#include <LiquidCrystal.h>
#include <Wire.h> 
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD 
 
void setup()
{
 lcd.begin(16, 2);
 Wire.begin(4); // join i2c bus with address #4
 Wire.onReceive(receiveEvent); // register event
 Serial.begin(9600); // start serial for output
}  
 
void loop()
{
 delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
 char c = Wire.read(); // receive byte as a character
 Serial.println(c); // print the character
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print(c);
 delay(100);
}



᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Download Datasheet ARDUINO UNO   klik disini
᭒ Download Datasheet LCD   klik disini
᭒ Donwload Datasheet Keypad   Klik disini












 


UTS 3

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan 5. Video 6. Download File...