Simulasi Proteus Arduino LED dan LCD- Menampilkan Teks dan Pola Cahaya

Dalam proyek ini, kita akan membuat program Arduino yang mengendalikan tampilan teks pada LCD 32×2 dan mengatur pola pencahayaan pada sembilan buah LED. Program ini dirancang untuk menampilkan informasi mengenai program studi “Rekayasa Sistem Komputer” di Universitas Pertiba, serta menciptakan pola cahaya yang menarik dengan menggunakan LED. Aplikasi yang digunakan adalah Proteus dan Arduino IDE.

Sebelum memulai, berikut adalah alat dan bahan yang diperlukan (Proteus):

  1. Arduino Uno: Sebagai mikrokontroler.
  2. LCD 32×2: Untuk menampilkan teks.
  3. Sembilan LED: Untuk menciptakan pola cahaya.
  4. Resistor 220 ohm: Untuk setiap LED.
  5. Breadboard dan kabel jumper: Untuk sambungan sirkuit.

Di bawah ini adalah kode lengkap untuk program yang digunakan (Arduino IDE):

#include <LiquidCrystal.h>

// Inisialisasi pin yang terhubung ke LCD: RS, E, D4, D5, D6, D7
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0);

// Definisikan pin untuk 9 LED
int ledPins[] = {0, 1, 2, 8, 9, 10, 11, 12, 13};
int numLeds = 9;

void setup() {
// Atur semua pin LED sebagai output
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}

// Atur jumlah kolom dan baris untuk LCD 32×2
lcd.begin(32, 2);

// Tampilkan teks di LCD dengan rata tengah
centerText(“PRODI REKAYASA SISTEM KOMPUTER”, 0);
centerText(“UNIVERSITAS PERTIBA”, 1);
}

void loop() {
// Memperbarui LED
updateLEDs();
}

// Fungsi untuk menempatkan teks di tengah untuk LCD 32×2
void centerText(const char* text, int row) {
int length = strlen(text);
int spaces = (32 – length) / 2; // Hitung jumlah spasi untuk rata tengah
if (spaces < 0) spaces = 0; // Pastikan tidak ada spasi negatif
lcd.setCursor(spaces, row);
lcd.print(text);
}

// Fungsi untuk memperbarui LED
void updateLEDs() {
// Pola LED sama seperti sebelumnya
for (int repeat = 0; repeat < 2; repeat++) { for (int i = 0; i < numLeds; i++) { digitalWrite(ledPins[i], HIGH); delay(50); } for (int i = numLeds – 1; i >= 0; i–) {
digitalWrite(ledPins[i], LOW);
delay(50);
}
}
delay(100);

for (int repeat = 0; repeat < 4; repeat++) {
digitalWrite(ledPins[numLeds / 2], HIGH);
delay(50);
for (int i = 0; i <= numLeds / 2; i++) {
digitalWrite(ledPins[numLeds / 2 – i], HIGH);
digitalWrite(ledPins[numLeds / 2 + i], HIGH);
delay(50);
}
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(50);
}
delay(100);

for (int repeat = 0; repeat < 4; repeat++) {
for (int i = 0; i < numLeds / 2; i++) {
digitalWrite(ledPins[i], HIGH);
digitalWrite(ledPins[numLeds – 1 – i], HIGH);
delay(50);
}
digitalWrite(ledPins[numLeds / 2], HIGH);
delay(50);
for (int i = 0; i < numLeds / 2; i++) {
digitalWrite(ledPins[i], LOW);
digitalWrite(ledPins[numLeds – 1 – i], LOW);
delay(50);
}
digitalWrite(ledPins[numLeds / 2], LOW);
delay(50);
}
delay(100);

for (int j = 0; j < 5; j++) {
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], HIGH);
}
delay(50);
for (int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
delay(50);
}
delay(50);
}

Penjelasan dari kode program di atas sebagai berikut:

Inisialisasi LCD:

  • Menggunakan pustaka LiquidCrystal, kode mengatur pin yang terhubung ke LCD. Dengan lcd.begin(32, 2), LCD diinisialisasi untuk memiliki 32 kolom dan 2 baris.

Pengaturan LED:

  • Sembilan pin LED didefinisikan dalam array ledPins, dan semua pin tersebut diatur sebagai output dalam fungsi setup().

Tampilan Teks pada LCD:

  • Fungsi centerText digunakan untuk menempatkan teks di tengah layar LCD. Teks “PRODI REKAYASA SISTEM KOMPUTER” dan “UNIVERSITAS PERTIBA” ditampilkan pada dua baris berbeda.

Pola Pencahayaan LED:

  • Fungsi updateLEDs() bertanggung jawab untuk mengatur pola pencahayaan LED. Pola yang diterapkan dalam program ini adalah:
    • Pola 1: LED menyala dari kiri ke kanan, lalu kembali ke kanan ke kiri.
    • Pola 2: LED menyala dari tengah ke luar, termasuk lampu terluar.
    • Pola 3: LED menyala dari luar ke tengah, diulangi beberapa kali.
    • Pola 4: Semua LED berkedip cepat secara bersamaan.

Kontrol Waktu:

  • Fungsi delay() digunakan untuk memberikan jeda waktu antara perubahan status LED, menciptakan efek visual yang menarik.

Program sederhana ini adalah contoh untuk mempelajari bagaimana mengendalikan LCD dan LED menggunakan Arduino. Dengan fungsionalitas yang sederhana, kita dapat menciptakan tampilan menarik yang dapat digunakan untuk berbagai aplikasi, seperti pengumuman atau presentasi. Modifikasi lebih lanjut dapat dilakukan untuk menambahkan lebih banyak pola cahaya atau menampilkan informasi dinamis pada LCD.

Untuk tampilan rangkaian pada proteus adalah sebagai berikut:

Terima kasih 🙂

Tinggalkan Komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *