Percobaan IV
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]
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Percobaan 3 melibatkan komunikasi antar Arduino menggunakan protokol I2C. Dalam rangkaian ini, terdapat dua Arduino di mana satu Arduino bertindak sebagai master yang mengirimkan perintah, sedangkan Arduino lainnya bertindak sebagai slave yang menerima dan mengeksekusi perintah. Pada rangkaian ini, input dari sistem diperoleh dari keypad yang terhubung ke pin Arduino master. Sebagai output, digunakan LCD 16x2 yang terhubung ke pin Arduino slave. Setiap kali tombol pada keypad ditekan, karakter yang sesuai dengan tombol tersebut akan ditampilkan pada layar LCD. Misalnya, jika tombol "*" pada keypad ditekan, layar LCD akan menampilkan simbol "*", dan proses ini berlaku untuk tombol lainnya yang ditekan. Dengan demikian, rangkaian ini memungkinkan interaksi antara pengguna dengan sistem melalui keypad untuk menampilkan informasi pada layar LCD.
Flowchart :Master
Slave
ListingProgram :
Master// Memasukkan library yang dibutuhkan#include <Keypad.h>#include <Wire.h>
// Mendefinisikan jumlah baris dan kolom pada keypadconst byte ROWS = 4;const byte COLS = 3;
// Membuat array yang berisi karakter-karakter pada keypadchar 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 Arduinochar rowPins[ROWS] = {9, 8, 7, 6};
// Mendefinisikan pin-pin untuk kolom pada Arduinochar colPins[COLS] = {5, 4, 3};
// Inisialisasi objek KeypadKeypad 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 <LiquidCrystal.h>#include <Wire.h>
// Inisialisasi objek LiquidCrystal dengan pin-pin yang terhubung ke LCDLiquidCrystal 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 mastervoid 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}
Flowchart :
Master
Slave
ListingProgram :
Master
// Memasukkan library yang dibutuhkan
#include <Keypad.h>
#include <Wire.h>
// 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 <LiquidCrystal.h>
#include <Wire.h>
// 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
}
Percobaan 3 ( Komunikasi I2C Menggunakan Arduino - rangkaian sesuai dengan modul)
- HTML klik disini
- Video Percobaan klik disini
- Listing Program klik disini
- Datasheet Arduino klik disini
- Datasheet Keypad klik disini
- Datasheet LCD 16x2 klik disini
- 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