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.
#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);
}
}
Semua Switch dalam kondisi Pull-down, 1 switch mengaktifkan 1 led sementara 4 switch mengaktifkan 3 led
HTML klik disini
Simulasi klik disini
Gambar Simulasi klik disini
Video Simulasi klik disini
Listring Program Master klik disini
Video Simulasi klik disini
Listring Program Master klik disini
Listring Program Slave klik disini
Tidak ada komentar:
Posting Komentar