*Klik teks untuk menuju
Percobaan III
DIP Switch dan LED dot matrix
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program
- Upload program ke arduino
- aktifkan 3 switch dan amati keluarannya pada LCD
2. Hardaware dan Diagram Blok [Kembali]
- 1. Arduino Uno2. Dip Switch 83. Dot Matrix4. MAX72196. Ground
3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
Gambar 1. Rangkaian Simulasi. Prinsip Kerja: Pada rangkaian percobaan 3 kondisi 6 ini menggunakan Dip Switch dan LED dot matrix. Dip Switch yang berfungsi sebagai input dan Matrix berfungsi sebagai output. Dimana ketika ada tiga buah switch on 1 (High) maka output pada LCD akan menampilkan "2, 2, 4". Dan ketika lebih/kurang dari tiga buah switch yang on 1 (HIGH) maka outputnya akan menyalakan LED pada Matrix sesuai barisan urutan switchnya. |
4. Flowchart dan listing Program [Kembali]
Flowchart :
Flowchart:
Listing Program:
#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() {
// Membaca status DIP switch dan mengupdate pola LED
int activeSwitches = 0; // Jumlah saklar yang aktif
for (int i = 0; i < 8; i++) {
if (digitalRead(DIP_Pins[i]) == LOW) {
activeSwitches++; // Menghitung jumlah saklar yang aktif
}
}
// Menampilkan angka 2, 2, dan 4 secara berurutan jika 3 saklar aktif
if (activeSwitches == 3) {
byte pattern1[] = { B00000000, B00011000, B00100110, B00000110, B00001100, B00011000, B00110000, B01111111, }; // Pola LED untuk angka 2
byte pattern2[] = { B00011000, B00111100, B11000110, B11000110, B11111111, B00000110, B00000110, B00000110 }; // Pola LED untuk angka 4
// Menampilkan angka 2
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, pattern1[i]);
delay(100); // Delay untuk efek tampilan
}
// Menampilkan angka 2
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, pattern1[i]);
delay(200); // Delay untuk efek tampilan
}
// Menampilkan angka 4
for (int i = 0; i < 8; i++) {
lc.setRow(0, i, pattern2[i]);
delay(100); // Delay untuk efek tampilan
}
} else {
// Menampilkan pola LED sesuai dengan status saklar DIP seperti sebelumnya
for (int i = 0; i < 8; i++) {
if (digitalRead(DIP_Pins[i]) == LOW) {
patterns[i] = B11111111; // Mengatur semua LED menyala jika sakelar diaktifkan
} else {
patterns[i] = 0; // Mengatur semua LED mati jika sakelar tidak diaktifkan
}
}
// 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
}
No comments:
Post a Comment