Laporan Akhir 1 Modul 3
Percobaan 3
I2C
a. Hardware
1. LCD
2. Arduino Uno
3. Keypad
4. Jumper
5. Breadboard
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
3 . Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Prinsip Kerja :
Pada rangkaian percobaan 2 , menggunakan prinsip komunikasi 2 arduino jenis I2C.Dimana pada rangkaian terdapat 2 buah arduino yang salah satunya bertindak sebagai master arduino yang nantinya akan dihubungkan dengan input ( pada percobaan ini, input berasal dari keypad ), dan arduino yang lainnya bertindak sebagai arduino slave yang nantinya akan terhubung pada output ( pada percobaan ini output akan ditampilkan pada LCD ). Pada LCD juga terdapat sebuah potensiometer yang berfungsi sebagai pengatur tingkat kecerahan pada tampilan LCD, dimana kaki yang berada pada bagian tengah potensiometer akan dihubungkan langsung ke arduino.
Pada input diberikan pada keypad,arduino master akan mendeteksi input yang diberikan dan selanjutnya akan memberikan karakter yang sesuai melalui saluran komunikasi I2C. Dimana pada komunikasi I2C dapat menggunakan 2 pin dan satu jalur dalam proses pengiriman data. Proses dimulai dengan inisialisasi menggunakan fungsi Wire,begin().
Penampilan output pada LCD pada arduino slave, akan diatur dengan menggunakan library LiquidCrystal dan arduino tersebut pada program diatur dengan alamat 4. Komunikasi I2C akan ditandai dengan menggunakan pin SDA dan SCK pada arduino.
4. Flowchart [Kembali]
a. Flowchart
Master
b. Listing Program
Master
//Master Arduino
#include <Keypad.h>
#include <Wire.h>
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'9', '8', '7'},
{'6', '5', '4'},
{'3', '2', '1'},
{'*', '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
//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); // register event
Serial.begin(9600); // start serial for output
}
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, 1);
lcd.print(c);
delay(100);
}
5. Video Simulasi Praktikum [Kembali]
6. Analisa [Kembali
7. Download File [Kembali]
HTML Klik disini
Rangkaian Simulasi Klik disini
Video Simulasi klik disini
Listing Program Master Klik disini
Listing Program Slave Klik disini
Datasheet Arduino Uno klik disini
Datasheet Keypad klik disini
Tidak ada komentar:
Posting Komentar