Laporan Akhir 2


Percobaan III

Komunikasi I2C Menggunakan Arduino

1. Prosedur [Kembali]

  • Rangkailah seperti rangkaian berikut
  • Buka Arduino IDE dan masukan listing program
  • Upload program ke arduino master dan arduino slave
  • Pilih tombol yang ingin ditekan dan amati keluarannya pada LCD
Gambar 1. Rangkaian Hardware
 

   1. Arduino Uno

    2. Keypad


    3. LCD


    4. Kabel jumper

    5. Breadboard


   


Diagram Blok:




        Prinsip Kerja:

     Pada rangkaian percobaan 3 kondisi 2 ini menggunakan dua arduino yaitu sebagai master dan slave. Dimana master bertanggung jawab sebagai pengirim data yang diinput dari keypad dan slave sebagai penerima data dan menampilkan pesan tersebut pada LCD. Kedua arduino berkomunikasi melalui I2C (Inter Integrated Circuit), yang memungkinkan perangkat mikrokontroler saling berkomunikasi secara digital melalui pin SDA dan pin SCL.
        Pada arduino master terhubung dengan inputan dari keypad untuk memasukkan karakter dimana karakter akan dikirimkam melalui jalur I2C ke slave. Dimana jika key 1 - 9 menampilkan karakter nomor 1-9 secara berurut di kolom LCD. Data dari arduino master diterima melalui jalur I2C dimana fungsi 'Wire.begin()' akan saling menghubungkan master dan slave secara otomatis. Pesan yang dikirim dari input keypad master akan ditampilkan pada LCD.

 

4. Flowchart dan Listing Program [Kembali]

Flowchart:
    Master

        Slave
Listing Program:

  • Arduino Master
//Master Arduino
#include <Keypad.h>
#include <Wire.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);
void setup()
{
 Wire.begin(); // join i2c bus (address optional for master)
 
//byte x = 0;
void loop(){

 char key = keypad.getKey();

 if (key) {
 Wire.beginTransmission(4); // transmit to device #4
 Wire.write(key);
 Wire.endTransmission(); // stop transmitting
 }
}

  • Arduino Slave
 //Slave Arduino
#include <LiquidCrystal.h>
#include <Wire.h> 
 
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD 
 
void setup()
{
 lcd.begin(16, 2);
 Wire.begin(4); // join i2c bus with address #4
 Wire.onReceive(receiveEvent); // register event
 Serial.begin(9600); // start serial for output
}  
 
void loop()
{
 delay(100);
}
// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany)
{
 char c = Wire.read(); // receive byte as a character
 Serial.println(c); // print the character
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print(c);
 delay(100);
}

 

5. Kondisi [Kembali]

    Kondisi Percobaan III sesuai modul 3


᭒ HTML↠ klik disini
᭒ Gambar Rangkaian ↠ klik disini
᭒ Video Demo ↠ klik disini
᭒ Listing Program ↠ klik disini
᭒ Download Datasheet ARDUINO UNO   klik disini
᭒ Download Datasheet LCD   klik disini
᭒ Donwload Datasheet Keypad   Klik disini














Tidak ada komentar:

Posting Komentar

Unggulan

Aplikasi Encoder Decoder

APLIKASI ROLLING TOKO OTOMATIS [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Percobaan ...