Laporan Akhir 2






1. Prosedur Percobaan [Kembali]

  • Rangkai komponen sesuai percobaan dan kondisi yang dipilih.
  • Buat program di aplikasi arduino IDE
  • Compile program yang telah dibuat, upload ke dalam Arduino Uno 
  • Uji coba program pada rangkaian percobaan


2. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno



        2. Keypad



        3. LCD 16 x 2


        4. Kabel Jumper


        5. Breadboard



Diagram Blok:






Prinsip Kerja

Dibutuhkan 2 arduino dalam menggunakan komunikasi I2C, yaitu arduino master dan slave. Arduino master terhubung dengan keypad di pin 3-5 yang berperan sebagai kolom, dan 6-9 yang berperan sebagai baris. Sedangkan arduino slave terhubung dengan LCD sebagai output pada pin 2-5 serta 11-12. Dengan adanya inisialisasi komunikasi (fungsi 'Wire.begin()') pada arduino master, menandakan arduino berperan sebagai pengendali utama. Inisialisasi komunikasi I2C juga dilakukan pada arduino slave dengan peran sebagai penerima dengan alamat I2C tertentu. 

Tiap key yang ditekan, karakter akan ditransmisikan ke arduino slave dengan alamat tertentu. Pada arduino slave, ketika menerima data, fungsi 'receiveEvent' secara otomatis dipanggil, mengizinkan Arduino slave untuk membaca karakter yang diterima (dengan fungsi 'Wire.read()') dan menambahkannya ke variabel 'message'. Pesan tersebut akan ditampilkan pada LCD dengan fungsi 'displayMessage()'. 
 

4. Flowchart dan Listing Program [Kembali]

    Master


    Slave

Listing Program:


// Memasukkan library yang dibutuhkan #include #include // Mendefinisikan jumlah baris dan kolom pada keypad const byte ROWS = 4; const byte COLS = 3; // Membuat array yang berisi karakter-karakter pada keypad char keys[ROWS][COLS] = { {'1', '2', '3'}, // Baris pertama pada keypad {'4', '5', '6'}, // Baris kedua pada keypad {'7', '8', '9'}, // Baris ketiga pada keypad {'*', '0', '#'}, // Baris keempat pada keypad }; // Mendefinisikan pin-pin untuk baris pada Arduino char rowPins[ROWS] = {9, 8, 7, 6}; // Mendefinisikan pin-pin untuk kolom pada Arduino char colPins[COLS] = {5, 4, 3}; // Inisialisasi objek Keypad Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); void setup() { Wire.begin(); // Bergabung dengan bus I2C sebagai master } void loop(){ char key = keypad.getKey(); // Mendapatkan tombol yang ditekan if (key) { // Jika ada tombol yang ditekan Wire.beginTransmission(4); // Mulai transmisi ke perangkat dengan alamat I2C #4 Wire.write(key); // Mengirim karakter tombol yang ditekan Wire.endTransmission(); // Mengakhiri transmisi } }


Slave

// Memasukkan library yang dibutuhkan untuk LCD dan komunikasi I2C #include #include // Inisialisasi objek LiquidCrystal dengan pin-pin yang terhubung ke LCD LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD void setup() { lcd.begin(16, 2); // Menginisialisasi LCD dengan ukuran 16 kolom dan 2 baris Wire.begin(4); // Bergabung dengan bus I2C dengan alamat #4 sebagai slave Wire.onReceive(receiveEvent); // Mendaftarkan fungsi receiveEvent sebagai event handler ketika data diterima Serial.begin(9600); // Memulai komunikasi serial untuk output } void loop() { delay(100); // Loop utama hanya memiliki delay, pemrosesan dilakukan di receiveEvent } // Fungsi yang dijalankan setiap kali data diterima dari master void receiveEvent(int howMany) { char c = Wire.read(); // Menerima byte sebagai karakter Serial.println(c); // Mencetak karakter ke serial monitor lcd.clear(); // Membersihkan layar LCD lcd.setCursor(0, 0); // Menyetel kursor ke posisi awal lcd.print(c); // Menampilkan karakter pada LCD delay(100); // Delay untuk stabilitas }


5. Kondisi [Kembali]

    Percobaan 3 Modul 3: Komunikasi I2C menggunakan arduino










Posting Komentar

0 Komentar