#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi objek LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C modul LCD, 16 kolom, 2 baris
const int merah1 = 2;
const int merah2 = 3;
const int merah3 = 4;
const int kuning = 5;
const int hijau = 6;
// Fungsi untuk menampilkan teks berjalan pada baris pertama LCD
void displayScrollingText(const char* text) {
static int pos = 0; // Posisi awal teks
lcd.setCursor(0, 0);
lcd.print(text + pos); // Print teks mulai dari posisi saat ini
pos++;
if (pos >= strlen(text)) { // Kembali ke awal jika sudah mencapai akhir teks
pos = 0;
}
delay(500); // Delay antara perpindahan karakter
}
void setup() {
// Inisialisasi pin sebagai OUTPUT
pinMode(merah1, OUTPUT);
pinMode(merah2, OUTPUT);
pinMode(merah3, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
lcd.setCursor(0, 1);
lcd.print("Selamat datang!");
}
void loop() {
displayScrollingText("Nama Sirkuit "); // Panggil fungsi teks berjalan
// Merah 1 menyala
digitalWrite(merah1, HIGH);
lcd.setCursor(0, 1);
lcd.print("Merah 1 ");
delay(1000); // Tahan selama 1 detik
// Merah 1 dan merah 2 menyala
digitalWrite(merah2, HIGH);
lcd.setCursor(0, 1);
lcd.print("Merah 1 dan 2 ");
delay(1000); // Tahan selama 1 detik
// Merah1, merah2 dan merah3 menyala
digitalWrite(merah3, HIGH);
lcd.setCursor(0, 1);
lcd.print("Semua merah ");
delay(2000); // Tahan selama 2 detik
// kuning menyala, Merah1, merah2 dan merah3 menyala
digitalWrite(kuning, HIGH);
lcd.setCursor(0, 1);
lcd.print("Kuning ");
delay(1000); // Tahan selama 1 detik
// Hijau nyala, semua mati
digitalWrite(merah1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(merah3, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
lcd.setCursor(0, 1);
lcd.print("Hijau ");
delay(5000); // Tahan selama 5 detik
}