I. Buatlah rangkaian dengan alat dan bahan yang ada sesuai dengan modul.
II. Buatlah program untuk arduino master dan slave di software Arduino IDE.
III. Compile program tadi, lalu upload ke dalam arduino.
IV. Setelah program selesai di upload, jalankan rangkaian.
4. Flowchart dan Listing Program [Kembali
Flowchart Arduino Slave
II. Buatlah program untuk arduino master dan slave di software Arduino IDE.
III. Compile program tadi, lalu upload ke dalam arduino.
IV. Setelah program selesai di upload, jalankan rangkaian.
2. Hardware dan Diagram Blok [Kembali]
a) Modul Arduino
b) Keypad
c) LCD
d) Breadboard
e) Jumper
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Pada dasarnya rangkaian ini menggunakan komunikasi data jenis I2C. Dalam komunikasi I2C, ada dua jenis perangkat, yaitu master dan slave. Komunikasi dimulai ketika master menginisiasi transmisi dengan mengirimkan sinyal start (START) di jalur SDA saat SCL berada pada level tinggi. Pada rangkaian ini sinyal start dimulai ketika kita mulai menekan keypad. Kemudian, master mengirimkan alamat slave yang dituju beserta operasi yang diminta yang mana inputan pada keypad tadi. Setelah itu, slave yang dituju memberikan respons sesuai permintaan master yang mana Slave akan mengeluarkan output sesuai masukan dari master dan outputnya akan ditampilkan pada LCD. Data dikirimkan antara master dan slave secara serial pada jalur SDA, dan sinkron dengan sinyal clock pada jalur SCL. Komunikasi diakhiri dengan master mengirimkan sinyal stop (STOP) di jalur SDA saat SCL berada pada level tinggi.
Flowchart Arduino Master
Listing Program
Master
#include <Key.h>
#include <Keypad.h>
#include <Keypad.h>
#include <Wire.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'A', '2', '3'},
{'B', '5', '6'},
{'C', '8', '9'},
{'D', '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
}
}
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);
}
Slave
#include <Wire.h>
#include <Keypad.h>
const byte ROWS = 4; // Jumlah baris pada keypad
const byte COLS = 4; // Jumlah kolom pada keypad
// Matriks keypad
char keys[ROWS][COLS] = {
{'7','8','9','A'},
{'4','5','6','B'},
{'1','2','3','C'},
{'*','0','#','D'}
};
// Pin yang terhubung ke baris keypad
byte rowPins[ROWS] = {7, 8, 9, 10};
// Pin yang terhubung ke kolom keypad
byte colPins[COLS] = {3, 4, 5, 6};
// Membuat objek keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup() {
Serial.begin(9600);
Wire.begin(); // Mulai komunikasi I2C sebagai master
}
void loop() {
char key = keypad.getKey(); // Membaca tombol yang ditekan pada keypad
if (key != NO_KEY) { // Jika tombol ditekan
Serial.println(key); // Tampilkan tombol yang ditekan di serial monitor
Wire.beginTransmission(9); // Mulai transmisi ke slave dengan alamat 9
Wire.write(key); // Kirim tombol yang ditekan ke slave
Wire.endTransmission(); // Akhiri transmisi
delay(100); // Tunda sebentar untuk menghindari bouncing pada tombol
}
}
5. Video Demo [Kembali]
6. Kondisi [Kembali]
Percobaan 3 kondisi 7, Key A - D menampilkan huruf A - D secara berurut, huruf yang ditampilkan mengalami scroll ke kiri pada kolom kedua




.jpeg)
.jpeg)
.png)
.png)