Senin, 29 April 2024

TP2M3


Percobaan 3 Kondisi 5

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

   


  • Flowchart
    Master
    Slave

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

4. Kondisi [Kembali]

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

MODUL 4

    [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Percobaan Per...