[Kembali ke Menu Sebelumnya]

DAFTAR ISI
1. Prosedur
2. Hardware dan Diagram Blok
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart
5. Kondisi
6. Video Simulasi
7. Download File


MODUL 3: Communication
Selasa, 30 April 2024
Tugas Pendahuluan 1

1. Prosedur [Daftar Isi]
1. Susunlah susunan komponen dalam perangkat lunak Proteus sesuai dengan kondisi eksperimen.
2. Buatlah skrip untuk perangkat Arduino menggunakan perangkat lunak Arduino IDE.
3. Lakukan proses kompilasi untuk skrip tersebut, kemudian unggah ke perangkat Arduino.
4. Setelah proses pengunggahan selesai, aktifkan simulasi rangkaian dalam perangkat lunak Proteus.

2. Hardware dan Diagram Blok [Daftar Isi]
a) Modul Arduino

b) ESP32

c) Dipswitch

d) LED

e) Seven Segment

Percobaan 3


3. Rangkaian Simulasi dan Prinsip Kerja [Daftar Isi]
Percobaan 3


    Rangkaian ini terdiri dari dua buah Arduino: Arduino slave di sebelah kanan untuk menghasilkan output melalui LCD dan Arduino master di sebelah kiri sebagai input berupa keypad 4 x 4. Pada kondisi 7, key A - D menampilkan huruf A-D secara berurut, huruf yang ditampilkan mengalami pergeseran ke kiri dan huruf pertama akan muncul pertama kali tidak di kolom satu, melainkan kolom kedua, dikarenakan codingan di bawah ini dengan pengulangan penambahan 1 kolom pada setiap huruf yang muncul.
for (int i = 0; i < 15; i++) {
    message[i] = message[i+1];
  }
Komunikasi ini menggunakan jenis komunikasi I2C.

4. Flowchart [Daftar Isi]
Percobaan 3
Untuk Master

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

const byte ROWS = 4; // Jumlah baris pada keypad
const byte COLS = 4; // Jumlah kolom pada keypad

// Matriks keypad
char keys[ROWS][COLS] = {
  {'7','8','9','A'},
  {'4','5','6','B'},
  {'1','2','3','C'},
  {'*','0','#','D'}
};

// Pin yang terhubung ke baris keypad
byte rowPins[ROWS] = {7, 8, 9, 10};

// Pin yang terhubung ke kolom keypad
byte colPins[COLS] = {3, 4, 5, 6};

// Membuat objek keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);

void setup() {
  Serial.begin(9600);
  Wire.begin(); // Mulai komunikasi I2C sebagai master
}

void loop() {
  char key = keypad.getKey(); // Membaca tombol yang ditekan pada keypad
 
  if (key != NO_KEY) { // Jika tombol ditekan
    Serial.println(key); // Tampilkan tombol yang ditekan di serial monitor
    Wire.beginTransmission(9); // Mulai transmisi ke slave dengan alamat 9
    Wire.write(key); // Kirim tombol yang ditekan ke slave
    Wire.endTransmission(); // Akhiri transmisi
    delay(100); // Tunda sebentar untuk menghindari bouncing pada tombol
  }
}

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

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inisialisasi objek LCD dengan pin yang terhubung
char receivedChar; // Variabel untuk menyimpan karakter yang diterima dari master
char message[17] = "                "; // Array untuk menyimpan pesan (16 karakter termasuk spasi)

void setup() {
  lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
  Wire.begin(9); // Mulai komunikasi I2C sebagai slave dengan alamat 9
  Wire.onReceive(receiveEvent); // Panggil fungsi receiveEvent() saat menerima data dari master
}

void loop() {
  // Tidak ada yang perlu dilakukan di loop()
}

void receiveEvent(int byteCount) {
  if (byteCount == 1) {
    receivedChar = Wire.read(); // Baca karakter yang diterima dari master
    scrollAndDisplay(receivedChar); // Panggil fungsi untuk melakukan scroll dan menampilkan karakter di LCD
  }
}

void scrollAndDisplay(char newChar) {
  // Geser semua karakter ke kiri pada kolom pertama
  for (int i = 0; i < 15; i++) {
    message[i] = message[i+1];
  }
 
  // Tambahkan karakter baru ke posisi terakhir pada kolom pertama
  message[15] = newChar;
 
  // Tampilkan pesan pada LCD
  lcd.clear();
  lcd.setCursor(0, 0); // Set posisi kursor di baris kedua
  lcd.print(message + 1); // Tampilkan pesan di baris pertama, dimulai dari karakter kedua atau kolom kedua
}


5. Kondisi [Daftar Isi]
Pada percobaan kali ini, kami melakukan percobaan ke-3 yang berfokus pada mengkomunikasikan I2C menggunakan Arduino dalam kondisi 7, yaitu Key A - D menampilkan huruf A-D secara berurut, huruf yang ditampilkan mengalami scroll ke kiri pada kolom kedua.

6. Video Simulasi [Daftar Isi]
Percobaan 3



7. Download File [Daftar Isi]
Untuk HTML di sini
Unduh Rangkaian Simulasi di sini
Unduh Program di sini
Unduh Video Simulasi di sini
Unduh Datasheet Arduino UNO di sini