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