M3TP2

 [KEMBALI KE MENU SEBELUMNYA]


1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi
  • Rangkaian Simulasi


  • Prinsip Kerja
Pada percobaan 3 kondisi 1, digunakan komunikasi data I2C yang bersifat half duplex, yang berarti data dikirim dan diterima dalam waktu yang berbeda dan bergantian. Dalam setup ini, terdapat 2 Arduino Uno yang terhubung dengan keypad 3x4 dan LCD. Master menggunakan keypad sebagai pengirim data, sedangkan slave menggunakan LCD sebagai penerima data. Prosesnya adalah saat kita menekan tombol pada keypad, input akan muncul pada LCD sesuai dengan angka yang ditekan. Namun, jika tombol keypad ditekan secara bersamaan, bisa terjadi tabrakan informasi karena komunikasi I2C adalah half duplex, yang artinya tidak bisa melakukan transmisi dan penerimaan data secara bersamaan.

  • Flowchart





  • Listing Program
#include <Wire.h>
#include <Keypad.h>
#include <LiquidCrystal.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);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD

void setup() {
  Wire.begin(); // join i2c bus (address optional for master)
  lcd.begin(16, 2); // Inisialisasi LCD
  Wire.begin(4); // join i2c bus with address #4
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600); // start serial for output
}

void loop() {
  char key = keypad.getKey();

  if (key != NO_KEY) {
    Wire.beginTransmission(4); // transmit to device #4
    Wire.write(key);
    Wire.endTransmission(); // stop transmitting
    delay(10); // Delay for stability
  }
}

// Function that executes whenever data is received from master
// This function is registered as an event, see setup()
void receiveEvent(int howMany) {
  if (howMany > 0) {
    char c = Wire.read(); // Receive byte as a character
    Serial.println(c); // Print the character
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(c);
  }
}

4. Kondisi [Kembali]

Semua Switch dalam kondisi Pull-down, 1 switch mengaktifkan 1 led sementara 4 switch mengaktifkan 3 led    

Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi  klik disini
Listring Program Master  klik disini
Listring Program Slave  klik disini

Tidak ada komentar:

Posting Komentar

Pemimpin

Menggali Sisi Positif dan Negatif Kepemimpinan Kepemimpinan adalah salah satu elemen kunci dalam mencapai keberhasilan dalam berbagai bidang...