TUGAS PENDAHULUAN 2
Percobaan 3
Komunikasi I2C Menggunakan Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
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
}
}
Percobaan 3 Kondisi , Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami blinking pada kolom pertama
- HTML↠ klik disini
- Rangkaian ↠ klik disini
- Video Percobaan↠ klik disini
- Datasheet Arduino↠ klik disini
- Datasheet LCD↠ klik disini
- Datasheet Keypad↠ klik disini
- Datasheet Potensiometer↠ klik disini
Tidak ada komentar:
Posting Komentar