[KEMBALI KE MENU SEBELUMNYA]
1. Prosedur [back]
1. Siapkan alat dan bahan yaitu dengan komponen yaitu Arduino Uno,
Keypad, dan LCD
2. Rangkai sesuai gambar percobaan.
3, Rancang kerja rangkaian sesuai kondisi.
4. Jalankan simulasi.
2. Hardware dan diagram blok [back]
- Keypad
3. Rangkaian Simulasi dan Prinsip Kerja [back]
- Rangkaian Simulasi
- Prinsip Kerja
Pada percobaan kali ini menggunakan alat dan bahan seperti keypad (input), Arduino Uno (Master), Arduino Uno (Slave), dan LCD (output). Percobaan kali ini merupakan komunikasi arduino I2C (Inter-Integrated Circuit), dimana menggunakan pin SCL dan SDA yang terdapat pada arduino (Master dan Slave) yang saling terhubung. Keypad dihubungkan dengan Master Arduino uno, dan Output LCD dihubungkan pada Slave Arduino. Komunikasi I2C ini termasuk Half Duplex Arduino dimana Master Arduino uno akan mengirimkan data menuju Slave arduino secara bergantian dikarenakan pada komunikasi ini hanya memilki satu jalur data. Sehingga apabila dilakukan penekanan pada keypad, Master arduino akan mengirim data menuju Slave arduino melalui jalur SDA dan Slave arduino akan menerima data sehingga akan ditampilkan pada output LCD karakter angka 1-9 sesuai tombol keypad yang ditekan. Karakter ini akan ditampilkan pada kolom pertama baris pertama pada LCD 16×2 sesuai dengan kondisi percobaan.
4. Flowchart dan Listing Program [back]
- Master Arduino
//Master Arduino
#include <Keypad.h> //library keypad
#include <Wire.h> // library wire untuk komunikasi I2C
//mendefinisikan jumlah baris dan kolom
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) memulai komunikasi I2C
}
//byte x = 0;
void loop(){
char key = keypad.getKey(); //membaca input keypad
if (key) {
Wire.beginTransmission(4); // transmit to device #4
Wire.write(key); // mengirimkan data yang disimpan dalam variabel "key" melalui jalur I2C.
Wire.endTransmission(); // stop transmitting
}
}
- Slave Arduino
//Slave Arduino
#include <LiquidCrystal.h>
#include <Wire.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Sesuaikan pin sesuai dengan koneksi LCD
void setup()
{
lcd.begin(16, 2);
Wire.begin(4); // join i2c bus with address #4
Wire.onReceive(receiveEvent); // fungsi memproses data dari master
Serial.begin(9600); // fungsi memulai komunikasi serial
}
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) //fungsi yang dipanggil ketika data diterima dari master
{
char c = Wire.read(); // membaca data byte yang diterima dan menyimpan dalam variabel c
Serial.println(c);// menampilkan data yang diterima ke serial monitor
// print the character
lcd.clear(); // fungsi membersihkan layar lcd
lcd.setCursor(0, 0); //posisi kursor tampilan pada LCD
lcd.print(c); // menampilkan karakter yang diterima pada LCD
delay(100);
}
6. Kondisi [back]
Percobaan 3 Kondisi 1 :
key 1 - 9 menampilkan karakter nomor 1 - 9 secara berurut di kolom pertama LCD
7. Video Simulasi [back]
8. Download File [back]
Tidak ada komentar:
Posting Komentar