Percobaan 3 Kondisi 7
1. Prosedur [Kembali]
Rangkailah seperti rangkaian berikut
Buka Arduino IDE dan buat listing program sesuai kondisi diberikan, upload program ke arduino IDE
Variasikan tombol yang ditekan
2. Hardware dan Diagram Blok [Kembali]
a. Arduino
b. Keypad
c. LCD
- Rangkaian
- Prinsip Kerja
Percobaan ini menunjukkan komunikasi serial antar 2 perangkat arduino Uno dimana, terdapat arduino yang berfungsi sebagai master untuk mengirimkan informasi berupa perintah untuk menampilkan input keypad pada LCD oleh arduino yang berfungsi sebagai slave.
Dalam hal ini, keypad berfungsi sebagai input dan LCD berfungsi sebagai output.
- Listing Program
//Master Arduino
#include <Keypad.h>
#include <Wire.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'A', '2', '3'},
{'B', '5', '6'},
{'C', '8', '9'},
{'D', '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
}
}
//Slave
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inisialisasi objek LCD dengan pin yang terhubung
String message = ""; // Pesan yang akan ditampilkan di LCD
void setup() {
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
Wire.begin(9); // Mulai komunikasi I2C sebagai slave dengan alamat 9
Wire.onReceive(receiveEvent); // Panggil fungsi receiveEvent() saat menerima data dari master
}
void loop() {
// Tidak ada yang perlu dilakukan di loop()
}
void receiveEvent(int byteCount) {
while (Wire.available()) {
char receivedChar = Wire.read(); // Baca karakter yang diterima dari master
message += receivedChar; // Tambahkan karakter ke pesan
if (message.length() > 16) { // Jika panjang pesan lebih dari 16 karakter
message = message.substring(1); // Potong karakter pertama dari pesan
}
displayMessage(); // Tampilkan pesan pada LCD
}
}
void displayMessage() {
lcd.clear(); // Bersihkan layar LCD
lcd.setCursor(0, 0); // Set posisi kursor di baris pertama
lcd.print(message); // Tampilkan pesan di LCD
}
Hubungan komunikasi serial pada 2 perangkat arduino, dengan keypad sebagai input dan LCD sebagai output dengan mengganti program untuk angka 1 pada keypad menampilkan huruf A, angka 4 menampilkan huruf B, 7 menampilkan huruf C, dan simbol bintang pada keypad menampilkan huruf D.
HTML klik disini
Simulasi klik disini
Gambar Simulasi klik disini
Video Simulasi klik disini
Listring Program klik disini
Video Simulasi klik disini
Listring Program klik disini