Tugas Pendahuluan 1 - M3

 





Tugas Pendahuluan 1
== Percobaan 3 Kondisi 2 ==


  1. Membuka proteus
  2. Buka file proteus yang sudah disesuaikan dengan kondisi
  3. Running rangkaiannya
  4. Sesuaikan dengan kondisi yang diinginkan




Arduino Uno


LCD

Keypad




Sebelum menjalankan rangkaian, compile terlebih dahulu listing program pada arduino IDE dan pastikan kembali file .HEX pada arduino diproteus sesuai dengan yang ada di hasil compiling arduino IDE.


Pada gambar rangkaian diatas adalah kondisi awal rangkaian sebelum dijalankan.



Rangkaian diatas adalah rangkaian yang terdiri dari dua Arduino yang saling berkomunikasi menggunakan protokol I2C (Inter-Integrated Circuit). Salah satu Arduino bertindak sebagai master, yang berfungsi untuk membaca input dari keypad, sedangkan yang lainnya bertindak sebagai slave, yang bertanggung jawab untuk menampilkan karakter pada LCD.Ketika slave Arduino menerima data dari master Arduino melalui jalur I2C, data tersebut diproses. Jika data yang diterima adalah karakter dari '1' hingga '9', maka karakter tersebut diubah menjadi karakter berurutan dari '9' hingga '1'. Kemudian, karakter yang dihasilkan ditampilkan pada kolom kedua LCD.

Dengan prinsip kerja tersebut, pengguna dapat menekan tombol pada keypad yang terhubung ke master Arduino, dan karakter yang sesuai akan ditampilkan secara berurutan dari '9' hingga '1' pada kolom kedua LCD yang terhubung ke slave Arduino melalui komunikasi I2C.





LISTING PROGRAM MASTER

#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Adjust pin connections according to your LCD wiring

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

void loop() {
  delay(100);
}

void receiveEvent(int howMany) {
  char c = Wire.read(); // receive byte as a character

  Serial.println(c);    // print the character received

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(c);

  delay(100);

  if (c >= '1' && c <= '9') {
    // Convert character to number and calculate the corresponding character to display
    int num = c - '0';
    char display_char = '9' - (num - 1);
    lcd.setCursor(1, 0); // Set cursor position to the second column
    lcd.print(display_char); // Display the corresponding character
  }
}

LISTING PROGRAM SLAVE

#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Adjust pin connections according to your LCD wiring

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

void loop() {
  delay(100);
}

void receiveEvent(int howMany) {
  char c = Wire.read(); // receive byte as a character

  Serial.println(c);    // print the character received

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(c);

  delay(100);

  if (c >= '1' && c <= '9') {
    // Convert character to number and calculate the corresponding character to display
    int num = c - '0';
    char display_char = '9' - (num - 1);
    lcd.setCursor(1, 0); // Set cursor position to the second column
    lcd.print(display_char); // Display the corresponding character
  }
}



Modul 1: Percobaan 2 Kondisi 2
"Key 1-9 menampilkan karakter nomor 9-1 secara berurut dikolom kedua LCD"

Tidak ada komentar:

Posting Komentar

  PRATIKUM SISTEM DIGITAL TAHUN 2022 OLEH : Tyas Ananda Putri 2010952036 JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS ANDALAS PADANG 2021