TP 2 M3


 



DAFTAR ISI
1. Foto Hardware dan Diagram Blok
2. Prosedur Percobaan
3. Rangkaian Simulasi dan Prinsip Kerja
4. Flowchart dan Listing Program
5. Kondisi
6. Video Simulasi
7. Link Download

Percobaan 3 Kondisi 6

 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 percobaan 3 kondisi 6 ada dua arduino, master dan slave. Master mengirimkan pesan dari keypad, sementara slave menerima pesan dan menampilkannya pada LCD. Keduanya berkomunikasi melalui komunikasi I2C, yang memungkinkan perangkat mikrokontroler berkomunikasi secara digital melalui pin SDA dan SCL. Keypad berfungsi sebagai input, dan LCD berfungsi sebagai keluaran.

    Untuk memasukkan karakter, Arduino Master terhubung ke input keypad. Setiap kali tombol ditekan, karakter dikirim ke Slave melalui jalur I2C. 

   Pada slave Arduino, data yang diterima dari master melalui jalur I2C ditampilkan pada LCD sesuai dengan preferensi pengguna. Pesan yang panjangnya lebih dari 16 karakter akan dipotong dari karakter pertama agar pesan tetap dalam batas 16 karakter.

4. Flowchart dan Listing Program [Kembali]

Master Arduino:


Slave Arduino: 



Listing Program:

Master
#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 } }


Slave

#include <Wire.h> #include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inisialisasi objek LCD dengan pin yang terhubung String message = ""; // Pesan yang akan ditampilkan di LCD 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) { while (Wire.available()) { char receivedChar = Wire.read(); // Baca karakter yang diterima dari master message += receivedChar; // Tambahkan karakter ke pesan if (message.length() > 16) { // Jika panjang pesan lebih dari 16 karakter message = message.substring(1); // Potong karakter pertama dari pesan } displayMessage(); // Tampilkan pesan pada LCD } } void displayMessage() { lcd.clear(); // Bersihkan layar LCD lcd.setCursor(0, 0); // Set posisi kursor di baris pertama lcd.print(message); // Tampilkan pesan di LCD }


5. Kondisi [Kembali]

    Pada kondisi 6 dari percobaan 3, Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami scroll ke kanan 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

Ujian Tengah Semester - Soal 3