Percobaan 3 Kondisi 5

 

TUGAS PENDAHULUAN 2



Percobaan 3

 Komunikasi I2C Menggunakan Arduino

1. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno


        2. Keypad




      3. LCD

        4. Potensiometer




       5. Power Supply


     6. Ground




Diagram Blok:



2. Prosedur Percobaan  [Kembali]

Rangkai semua komponen 
+ buat program di aplikasi arduino IDE
+ setelah selesai masukkan program ke arduino 
+ jalankan program pada simulasi dan cobakan dengan modul







Prinsip Kerja

Pada rangkaian terdapat dua arduino, yaitu arduino master dan arduino slave. Arduino master terhubung pada keypad dan arduino slave terhubung pada LCD. Keypad terhubung pada kaki 2 - 9 arduino master dan LCD terhubung pada kaki 2,3,4,5,11,12 arduino slave. Apabila keypad baris pertama ditekan maka akan muncul huruf A pada LED, apabila baris kedua ditekan akan muncul huruf B pada LED, apabila baris ketiga ditekan akan muncul huruf C pada LED, apabila baris keempat ditekan akan muncul huruf D pada LED. Informasi diproses pada arduino master kemudian dikirim ke arduino slave agar keluarannya muncul pada LED.


4. Flowchart dan Listing Program [Kembali]

Master Arduino:


Slave Arduino: 



Listing Program:

Master
#include <Keypad.h>
#include <Wire.h>

const byte ROWS = 4;
const byte COLS = 4; // Diubah menjadi 4 kolom untuk menambahkan tombol A-D
char keys[ROWS][COLS] = {
  {'1', '2', '3', 'A'}, // Menambahkan tombol 'A'
  {'4', '5', '6', 'B'}, // Menambahkan tombol 'B'
  {'7', '8', '9', 'C'}, // Menambahkan tombol 'C'
  {'*', '0', '#', 'D'}, // Menambahkan tombol 'D'
};
byte rowPins[ROWS] = {9, 8, 7, 6};
byte colPins[COLS] = {5, 4, 3, 2}; // Menambahkan pin untuk kolom keempat
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Wire.begin(); // join i2c bus (address optional for master)
}

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_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD dan ukuran (misalnya 16x2)

char receivedKey = '\0';
bool blinking = false;

void setup() {
  lcd.init(); // Inisialisasi LCD
  lcd.backlight(); // Hidupkan backlight LCD
  Wire.begin(4); // Terima data pada alamat #4
  Wire.onReceive(receiveEvent);
}

void loop() {
  if (blinking) {
    lcd.setCursor(0, 0);
    lcd.print(receivedKey);
    delay(500); // Tunda 500ms
    lcd.setCursor(0, 0);
    lcd.print(" "); // Hapus huruf yang ditampilkan
    delay(500); // Tunda 500ms
  }
}


5. Kondisi [Kembali]

   Percobaan 3 Kondisi , Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami blinking pada kolom pertama




Tidak ada komentar:

Posting Komentar