- Back to Home »
- Laporan Akhir 1
Jumat, 10 Mei 2024
Laporan Akhir 1
== Percobaan 3 ==
Komunikasi I2C Menggunakan Arduino
- Membuka proteus
- Buka file proteus yang sudah disesuaikan dengan kondisi
- Running rangkaiannya
- Sesuaikan dengan kondisi yang diinginkan
Keypad
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"