Jumat, 26 April 2024

LA 2




Percobaan 3 
Komunikasi I2C Menggunakan Arduino

1. Prosedur
[Kembali]

1. Rangkai komponen sesuai percobaan dan kondisi yang dipilih.

2. Buat program menggunakan Arduino IDE.

3. Compile program yang telah dibuat lalu Upload ke dalam Arduino Uno.

4. Uji coba program pada rangkaian percobaan sesuai dengan kondisi yang diinginkan.

5. Selesai

2. Hardware dan Diagram Blok [Kembali]

Hardware:

1.Arduino Uno


2.Keypad


3.LCD 16x2




Diagram Blok:




3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]

Rangkaian Simulasi :




Prinsip Kerja : 

Percobaa3 merupakaian komunikasi antar arduino dengan komunikasi I2C. pada rangkaian ini terdapat 2 arduino yang mana satu arduino berfungsi sebagai master yang akan memberi perintah sedangkan arduino yang lain sebagai slave atau penerima perintah/pengekesekusi perintah. pada rangkaian ini, input dari sistem berasal dari keypad yang dihubungkan ke pin arduino master. untuk outputnya berupa LCD 16x2 yang dihubungkan dengan pin arduino slave. Ketika tombol pada keypad kita tekan, maka output yang dihasilkan berupa tampilan dari karakter yang sesuai dengan tombol yang kita tekan pada layar LCD. misal kita menekan angka 1 di keypad, maka layar lcd akan menampilkan angka 1 dan seterusnya.

4. Flowchart dan Listing Program [Kembali]

Flowchart :
Master 



Slave 


ListingProgram :

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

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. Video Demo [Kembali]






6. Kondisi [Kembali]

Percobaan 3 ( Komunikasi I2C Menggunakan Arduino - rangkaian sesuai dengan modul dan program sama dengan TP)

7. Download File [Kembali]
HTML                                klik disini
Video Percobaan                klik disini
Listing Program                 klik disini
Datasheet Arduino             klik disini
Datasheet Keypad              klik disini
Datasheet LCD 16x2         klik disini

Tidak ada komentar:

Posting Komentar