LA 1 M3P3





LA 1
== Percobaan 3 ==
Komunikasi I2C Menggunakan Arduino


  1. Siapkan alat dan bahan yang akan digunakan pada saat praktikum seperti Arduino Uno, Keypad, LCD
  2. Rangkai sesuai gambar percobaan
  3. Rancang kerja rangkaian menggunakan flowchart
  4. Running rangkaian simulasi sesuai dengan kondisi pada saat praktikum


Blok Diagram


Arduino Uno


LCD


Keypad

Kabel Jumper

Breadboard





Prinsip Kerja:

    Pada percobaan 3 ini, yaitu komunikasi I2C menggunakan arduino. Keypad berperan sebagai input yang nantinya setiap tombol pada keypad akan menghasilkan sinyal berupa kode yang merepresentasikan tombol yang ditekan. Arduino akan bertindak sebagai master dalam komunikasi I2C. Arduino akan membaca input dari keypad dan mengirimkan data melalui bus I2C ke perangkat slave (LCD).  LCD akan berperan sebagai slave dalam komunikasi I2C. Arduino akan mengirimkan perintah atau data ke LCD melalui koneksi I2C. LCD akan menerima data yang dikirimkan dan menampilkan informasi sesuai dengan perintah yang diterima. Arduino akan membaca input dari keypad. Ketika tombol "1" ditekan, Arduino akan mengirimkan perintah ke LCD untuk menampilkan karakter "9" di kolom kedua. Ketika tombol "2" ditekan, Arduino akan mengirimkan perintah ke LCD untuk menampilkan karakter "8" di kolom kedua, dan seterusnya hingga tombol "9" ditekan yang akan menampilkan karakter "1" di kolom kedua. Komunikasi antara Arduino dan LCD menggunakan protokol komunikasi I2C. Arduino akan mengirimkan perintah atau data ke LCD dengan menggunakan alamat slave LCD dan protokol I2C. LCD akan menerima perintah tersebut dan menampilkan informasi sesuai dengan yang diterima.



Flowchart

  • Arduino Master


  • Arduino 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] = {
 {'9', '8', '7'},
 {'6', '5', '4'},
 {'3', '2', '1'},
 {'*', '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, 1);
 lcd.print(c);
 delay(100);
}


Modul 3: Percobaan 3
"Komunikasi I2C Menggunakan Arduino"