TUGAS PENDAHULUAN 1 M3 up&uc
1. Prosedur [Kembali]
- Susunlah susunan komponen dalam perangkat lunak Proteus sesuai dengan kondisi eksperimen.
- Buatlah skrip untuk perangkat Arduino menggunakan perangkat lunak Arduino IDE.
- Lakukan proses kompilasi untuk skrip tersebut, kemudian unggah ke perangkat Arduino.
- Setelah proses pengunggahan selesai, aktifkan simulasi rangkaian dalam perangkat lunak Proteus
2. Hardware dan Diagram Blok [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.
Komunikasi ini menggunakan jenis komunikasi I2C.
4. Flowchart dan Listing Program [Kembali]
Flowcharth
Listing Program
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <LedControl.h> //Library untuk LED Dot Matrix | |
const int DIP_Pins[] = {13, 12, A0, A1, A2, A3, A4, A5}; // Pin DIP switch terhubung ke Arduino | |
LedControl lc = LedControl(2, 3, 4, 1); // Pin DIN, CLK, LOAD (CS), dan jumlah Dot Matrix yang dihubungkan ke Arduino | |
byte patterns[8] = {0, 0, 0, 0, 0, 0, 0, 0}; // Pola LED untuk ditampilkan | |
void setup() { | |
for (int i = 0; i < 8; i++) { | |
pinMode(DIP_Pins[i], INPUT_PULLUP); // Mengatur pin DIP switch sebagai input dengan pull-up resistor | |
} | |
lc.shutdown(0, false); // Mengaktifkan display | |
lc.setIntensity(0, 8); // Mengatur kecerahan LED (nilai antara 0 dan 15) | |
lc.clearDisplay(0); // Membersihkan tampilan dot matrix | |
} | |
void loop() { | |
// Menghitung jumlah switch yang aktif | |
int activeSwitches = 0; | |
for (int i = 0; i < 8; i++) { | |
if (digitalRead(DIP_Pins[i]) == LOW) { | |
activeSwitches++; | |
} | |
} | |
// Menampilkan huruf "123" jika 2 switch aktif | |
if (activeSwitches == 2) { | |
patterns[0] = B00000000; | |
patterns[1] = B10111011; | |
patterns[2] = B10001001; | |
patterns[3] = B10001001; | |
patterns[4] = B10111011; | |
patterns[5] = B10100001; | |
patterns[6] = B10100001; | |
patterns[7] = B10111011; | |
} | |
else { | |
// Menampilkan pola default jika tidak ada 3, 5, atau 7 switch yang aktif | |
for (int i = 0; i < 8; i++) { | |
patterns[i] = 0; | |
} | |
} | |
// Menampilkan pola LED pada dot matrix | |
for (int row = 0; row < 8; row++) { | |
lc.setRow(0, row, patterns[row]); | |
} | |
delay(100); // Delay untuk tampilan LED stabil | |
} |
#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
}
}
Flowcharth Slave
Listing program
#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Inisialisasi objek LCD dengan pin yang terhubung
char receivedChar; // Variabel untuk menyimpan karakter yang diterima dari master
char message[17] = " "; // Array untuk menyimpan pesan (16 karakter termasuk spasi)
void setup() {
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2
Wire.begin(9); // Mulai komunikasi I2C sebagai slave dengan alamat 9
Wire.onReceive(receiveEvent); // Panggil fungsi receiveEvent() saat menerima data dari master
}
void loop() {
// Tidak ada yang perlu dilakukan di loop()
}
void receiveEvent(int byteCount) {
if (byteCount == 1) {
receivedChar = Wire.read(); // Baca karakter yang diterima dari master
scrollAndDisplay(receivedChar); // Panggil fungsi untuk melakukan scroll dan menampilkan karakter di LCD
}
}
void scrollAndDisplay(char newChar) {
// Geser semua karakter ke kiri pada kolom pertama
for (int i = 0; i < 15; i++) {
message[i] = message[i+1];
}
// Tambahkan karakter baru ke posisi terakhir pada kolom pertama
message[15] = newChar;
// Tampilkan pesan pada LCD
lcd.clear();
lcd.setCursor(0, 0); // Set posisi kursor di baris kedua
lcd.print(message + 1); // Tampilkan pesan di baris pertama, dimulai dari karakter kedua atau kolom kedua
}
5. Video Demo [Kembali]
Saat Praktikum
6. Kondisi [Kembali]
Pada percobaan kali ini, kami melakukan percobaan ke-3 yang berfokus pada mengkomunikasikan I2C menggunakan Arduino dalam kondisi 7, yaitu Key A - D menampilkan huruf A-D secara berurut, huruf yang ditampilkan mengalami scroll ke kiri pada kolom kedua.
7. Video Simulasi [Kembali]
8. Link Download [Kembali]
Download HTML [Klik di sini]
Download file rangkaian [Klik di sini]
Download video rangkaian [Klik di sini]
Download program Arduino [Klik di sini]
Download datasheet Arduino [Klik di sini]
Komentar
Posting Komentar