Jumat, 26 April 2024

TP 2




Tugas Pendahuluan 2 
Modul 3

Percobaan 3

 Komunikasi I2C Menggunakan Arduino 


1. Prosedur
[Kembali]

  1. Rangkai semua komponen 
  2. buat program di aplikasi arduino IDE
  3. setelah selesai masukkan program ke arduino 
  4. jalankan program pada simulasi dan cobakan dengan modul

2. Hardware dan Diagram Blok [Kembali]

a. Komponen Input
Keypad

b. Komponen Output
LCD

c. Komponen Mikrokontroler

Arduino Uno



Diagram Blok:




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
  1. Rangkaian Simulasi : 


2. Prinsip Kerja 
Prinsip kerja dari percobaan ini melibatkan dua Arduino, yaitu satu sebagai master dan satu lagi sebagai slave, yang saling berkomunikasi melalui protokol I2C. Pada Arduino Master, terdapat sebuah keypad sebagai input untuk memasukkan karakter. Setiap kali tombol pada keypad ditekan, karakter yang diinput dikirimkan melalui jalur I2C ke Arduino Slave.

Pada Arduino Slave, data yang diterima melalui jalur I2C dari Arduino Master akan diproses. Jika panjang pesan yang diterima sudah lebih dari 16 karakter, karakter pertama akan dipotong agar pesan tetap dalam batas 16 karakter yang dapat ditampilkan pada LCD. Kemudian, pesan tersebut akan ditampilkan pada LCD sesuai dengan kondisi yang diinginkan. Jika pesan lebih panjang dari 16 karakter, pesan tersebut akan di-scroll ke kanan pada LCD 16x2 agar dapat ditampilkan seluruhnya.

percobaan ini adalah mengirimkan karakter dari Arduino Master ke Arduino Slave melalui jalur I2C, dan kemudian menampilkan pesan tersebut pada LCD dengan memanfaatkan fitur scroll jika pesan melebihi kapasitas maksimum LCD.

4. Flowchart dan Listing Program [Kembali]

Master Arduino:


Slave Arduino: 



Listing Program:
> Arduino Master
//Master Arduino 
#include <Keypad.h> 
#include <Wire.h> 
 
const byte ROWS = 4; 
const byte COLS = 3; 
 
char keys[ROWS][COLS] = { 
  {'A', 'B', 'C'}, 
  {'D', '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
#include <LiquidCrystal.h>
#include <Wire.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Define LCD object with pin connections
char lcdText[17] = "                "; // Array to store characters displayed on LCD
int lcdIndex = 0; // Index to keep track of the position in the lcdText array

void setup() {
  lcd.begin(16, 2);  // Initialize the LCD with 16 columns and 2 rows
  Wire.begin(4);  // Join the I2C bus as a slave with address #4
  Wire.onReceive(receiveEvent); // Register the receiveEvent function to handle incoming data
  Serial.begin(9600); // Start serial communication for debugging
}

void loop() {
  delay(100); // Delay to avoid unnecessary looping
}

// Function that executes whenever data is received from the master
void receiveEvent(int howMany) {
  char c = Wire.read(); // Receive the byte sent by the master and store it in a character variable
  Serial.println(c); // Print the received character to the serial monitor for debugging
  
  // Shift characters to the right in the first column
  for (int i = 15; i >= 1; i--) {
    lcdText[i] = lcdText[i - 1];
  }
  lcdText[0] = c; // Insert the received character at the beginning of the array

  // Display the updated array on the LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print(lcdText);
}

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

6. Video Simulasi [Kembali]




7. Download File [Kembali]

HTML                       klik disini

Rangkaian                klik disini

Video Percobaan       klik disini

Datasheet Arduino    klik disini

Datasheet LCD         klik disini

Datasheet Keypad    klik disini





Tidak ada komentar:

Posting Komentar