Inter Integrated Circuit(I2C)-Keypad dan LCD
1. Prosedur [Kembali]
- Rangkailah semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai, masukkan program ke arduino
- Jalankan program pada simulasi dan lakukan sesuai kondisi
- Rangkaian
- Prinsip Kerja
Pada rangkaian ini terdiri dari 2 arduinoo yaitu arduino 1(master) dan arduino2(slave). Pada rangkaian ini keypad berperan sebagai input yang akan di terima oleh arduino 1. setelah itu akan di teruskan ke arduino 2 dan akan memproses program dari sinyal arduino 2 tadi dan akan menampilkan output di LCD. Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami blinking pada kolom pertama
- Listing Program
Master
#include <Wire.h>
#include <Keypad.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(); // Menginisialisasi komunikasi I2C
}
void loop() {
char key = keypad.getKey();
if (key) {
Wire.beginTransmission(9); // Alamat slave LCD
Wire.write(key);
Wire.endTransmission();
delay(50); // Menambahkan delay untuk memastikan karakter dikirim dengan benar
}
}
Slave
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // Pin untuk LCD (RS, E, D4, D5, D6, D7)
void setup() {
Wire.begin(9); // Alamat slave LCD
Wire.onReceive(receiveEvent); // Set fungsi untuk menerima data dari master
lcd.begin(16, 2); // Inisialisasi LCD (16x2)
}
void loop() {
// Tidak perlu melakukan apa-apa di loop karena semua pekerjaan dilakukan dalam fungsi receiveEvent
}
void receiveEvent(int numBytes) {
if (numBytes == 1) { // Pastikan hanya satu byte yang diterima
char receivedChar = Wire.read(); // Baca karakter yang diterima dari master
lcd.clear(); // Bersihkan tampilan LCD
// Tampilkan karakter sesuai dengan kondisi
if (receivedChar == '1') {
printBlinkingCharacter("A");
} else if (receivedChar == '4') {
printBlinkingCharacter("B");
} else if (receivedChar == '7') {
printBlinkingCharacter("C");
} else if (receivedChar == '*') {
printBlinkingCharacter("D");
} else {
lcd.print(" "); // Tampilkan spasi jika tombol lainnya ditekan
}
}
}
void printBlinkingCharacter(String character) {
for (int i = 0; i < 200; ++i) { // Lakukan berkedip sebanyak 10 kali
lcd.setCursor(0, 0); // Atur kursor ke posisi (0, 0)
lcd.print(" "); // Hapus karakter
delay(1000); // Delay untuk efek berkedip
lcd.setCursor(0, 0); // Atur kursor ke posisi (0, 0)
lcd.print(character); // Tampilkan karakter
delay(1000); // Delay untuk efek berkedip
}
}
Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami blinking pada kolom pertama
HTML klik disini
Rangkaian Simulasi klik disini
Video Simulasi klik disini
Listing Program klik disini
Tidak ada komentar:
Posting Komentar