Langkah-langkah percobaan :
1. Rangkai semua komponen sesuai kondisi yang dipilih
2. buat program di aplikasi arduino IDE
3. setelah selesai masukkan program ke arduino di proteus
4. jalankan program pada simulasi dan cobakan sesuai dengan
modul dan kondisi
5. Selesai
a. Arduino
b. LCD
pada percobaan ini menggunakan komunikasi arduino yaitu I2c. komunikasi 12c adalah komunikasi yang bisa mengirim dan menerima informasi tanpa adanya perbedaan waktu. pada percobaan ini kami menggunakan 2 arduino yaitu arduino sebagai master dan arduino sebagai slave. master berfungsi untuk mengontrol slave dengan mengirimkan inputan berupa kondisi keypad kepada slave, sedangkan slave akan menerima inputan yang mana akan ditampilkan pada LCD.. penggunaan arduino ini menggunakan pin SCL dan SDA untuk melakukan komunikasinya. komunikasi terjadi ketika pin SDA bekerja secara half-duplex. angak ganjil akan ditampilkan pada kolam 1 sedangkan angka genap pada kolam 2
- LISTING PROGRAM
#include
<Keypad.h> |
#include <Wire.h> |
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] =
{13, 12, 11, 10}; |
char colPins[COLS] =
{9, 8, 7}; |
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 |
} |
} |
##include <LiquidCrystal.h> #include <Wire.h> |
LiquidCrystal lcd(13,
12, 6, 5, 4, 3); // Sesuaikan pin sesuai dengan koneksi LCD |
|
int receivedData = 0; |
|
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 |
|
lcd.print("Silahkan Tekan"); |
} |
|
void loop() |
{ |
delay(100); |
} |
|
void receiveEvent(int
howMany) |
{ |
receivedData = Wire.read(); // receive byte
as a character |
Serial.println(receivedData); // print the
character |
|
if (receivedData >= '1' &&
receivedData <= '9') { |
int number = receivedData - '0'; |
lcd.clear(); |
lcd.setCursor(0, number % 2); |
lcd.print(number); |
} |
} |
Tidak ada komentar:
Posting Komentar