Tugas Pendahuluan 2



PERCOBAAN3
KOMUNIKASI I2C MENGGUNAKAN ARDUINO 

1. Prosedur [Kembali]

1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih. 2. Buat program menggunakan Arduino IDE. 3. Transfer program yang telah dibuat ke Arduino yang ada di Proteus. 4. Uji coba program di simulasi sesuai dengan kondisi yang diinginkan. 5. Proses selesai setelah uji coba berhasil dilakukan.

2. Hardware dan diagram blok [Kembali]

    1. Arduino Uno


        2. Keypad




      3. LCD

      
       4. Power Supply


     5. Ground


Diagram Blok:



3. Rangkaian Simulasi dan Prinsip kerja [Kembali]

Gambar Rangkaian
                                    





PRINSIP KERJA

Master :
Prinsip kerja Arduino Master dalam rangkaian ini. Pertama, Arduino master memeriksa status pin digital yang terhubung ke tombol pada keypad untuk menentukan apakah ada penekanan tombol oleh pengguna. Setelah itu, Arduino master menerjemahkan pola penekanan tombol menjadi kode atau perintah yang dapat dimengerti oleh Arduino slave. Kode ini dapat berupa representasi numerik dari tombol yang ditekan atau karakter tertentu yang mengidentifikasi tombol tersebut. Selanjutnya, Arduino master mengirimkan kode yang dihasilkan ke Arduino slave melalui pin digital yang telah ditetapkan untuk komunikasi antara master dan slave. Proses ini memungkinkan Arduino slave untuk merespons sesuai dengan instruksi yang diterima dari master, memfasilitasi interaksi antara keduanya dalam sistem yang terintegrasi.

Slave : Prinsip kerja Arduino Slave dalam rangkaian ini melibatkan beberapa tahapan kunci. Pertama, Arduino slave terus menerima instruksi dari Arduino master melalui pin komunikasi yang telah ditentukan, siap untuk menerima kode atau perintah yang dikirimkan oleh master. Selanjutnya, setelah menerima kode dari master, Arduino slave mengambil peran dalam menerjemahkan kode tersebut menjadi instruksi yang dapat dipahami. Kode yang diterima kemungkinan besar merepresentasikan tombol yang ditekan pada keypad atau perintah lainnya yang dikirim oleh master. Setelah itu, Arduino slave bertanggung jawab untuk mengontrol layar LCD sesuai dengan instruksi yang diterima. Ini mencakup mengirimkan perintah yang sesuai ke layar LCD, yang dapat berupa instruksi untuk menampilkan karakter tertentu, memperbarui teks yang ditampilkan, atau melakukan tindakan lain yang diperlukan. Dengan demikian, melalui serangkaian tindakan ini, Arduino slave berperan penting dalam mengontrol tampilan pada layar LCD berdasarkan instruksi yang diterima dari Arduino master, memastikan interaksi yang efektif dalam sistem secara keseluruhan.

4. FlowChart [Kembali]

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

void loop() {
  char key = keypad.getKey();
  if (key) {
    char letter;
    if (key == '1' || key == '2' || key == '3') {
      letter = 'A';
    } else if (key == '4' || key == '5' || key == '6') {
      letter = 'B';
    } else if (key == '7' || key == '8' || key == '9') {
      letter = 'C';
    } else {
      letter = 'D';
    }
    Wire.beginTransmission(4); // transmit to device #4
    Wire.write(letter);
    Wire.endTransmission(); // stop transmitting
    delay(100); // Added delay for stability
  }
}


Slave
#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD
char receivedLetter;
bool letterReceived = false;

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() {
  if (letterReceived) {
    for (int i = 0; i < 5; i++) {
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print(receivedLetter);
      delay(300); // Wait for 300ms
      lcd.clear(); // Clear LCD
      delay(300); // Wait for another 300ms
    }
    letterReceived = false; // Reset letterReceived flag
  }
}

void receiveEvent(int howMany) {
  receivedLetter = Wire.read(); // Read the received character
  letterReceived = true; // Set the flag to indicate letter received
}


b. Flowchart

Master 


Slave 




5. Kondisi [Kembali]

Kondisi  : Percobaan 3 Kondisi 5

Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami blinking pada kolom pertama
  


6. Video Simulasi [Kembali]


7. Link Download [Kembali]
Download Simulasi Rangkaian Klik disini
Download HTML Klik disini
Download Video Simulasi Klik disini
Download Listing Code Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet LCD klik disini



















Tidak ada komentar:

Posting Komentar

Modul 1

BRANKAS MODERN [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Pendahuluan 2. Tujuan 3. Alat dan Bahan 4. Dasar Teori 5. Perco...