Jumat, 10 Mei 2024





Laporan Akhir 1
== Percobaan 3 ==
Komunikasi I2C Menggunakan Arduino


  1. Membuka proteus
  2. Buka file proteus yang sudah disesuaikan dengan kondisi
  3. Running rangkaiannya
  4. Sesuaikan dengan kondisi yang diinginkan




Arduino Uno


LCD

Keypad

Kabel Jumper

Breadboard









Prinsip Kerja:

    Pada percobaan ini, keypad berperan sebagai input, 2 arduino yang  berperan sebagai master dan slave, dan LCD berperan sebagai output. Arduino akan mengirimkan perintah atau data dari keypad 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, begitupun seterusnya hingga tombol "9" ditekan yang akan menampilkan karakter "1" di kolom kedua, sesuai dengan kondisi 2, yaitu "Key 1 - 9 menampilkan karaktaer nomor 9 - 1 secara berurut di kolom kedua LCD". 

  • 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"



Leave a Reply

Subscribe to Posts | Subscribe to Comments

- Copyright © Muhammad Zaky Kurnia - Skyblue - Powered by Blogger - Designed by Johanes Djogan -