#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd (0x27, 16, 2);
int hijau=13;
int kuning=12;
int merah=11;
int hijau2=10;
int kuning2=9;
int merah2=8;
int hijau3=7;
int kuning3=6;
int merah3=5;
int hijau4=4;
int kuning4=3;
int merah4=2;
unsigned long prevMillisLCD = 0;
const long intervalLCD = 300;
String text = " ABIL LUCU ";
int pos = 0;
unsigned long previousMillis=0;
const long interval=200;
bool ledState=LOW;
unsigned long prevMillisLampu = 0;
int stepLampu = 0;
void setup() {
lcd.begin (16,2);
lcd.backlight();
lcd.setCursor(4,1);
lcd.print("ABILLUCU");
lcd.setCursor(4,0);
lcd.print("ABILLUCU");
pinMode(hijau,OUTPUT);
pinMode(kuning,OUTPUT);
pinMode(merah,OUTPUT);
pinMode(hijau2,OUTPUT);
pinMode(kuning2,OUTPUT);
pinMode(merah2,OUTPUT);
pinMode(hijau3,OUTPUT);
pinMode(kuning3,OUTPUT);
pinMode(merah3,OUTPUT);
pinMode(hijau4,OUTPUT);
pinMode(kuning4,OUTPUT);
pinMode(merah4,OUTPUT);
digitalWrite(hijau,LOW);
digitalWrite(kuning,LOW);
digitalWrite(merah,LOW);
digitalWrite(hijau2,LOW);
digitalWrite(kuning2,LOW);
digitalWrite(merah2,LOW);
digitalWrite(hijau3,LOW);
digitalWrite(kuning3,LOW);
digitalWrite(merah3,LOW);
digitalWrite(hijau4,LOW);
digitalWrite(kuning4,LOW);
digitalWrite(merah4,LOW);
}
void loop() {
unsigned long currentMillis=millis();
if (currentMillis - prevMillisLCD >= intervalLCD) {
prevMillisLCD = currentMillis;
lcd.setCursor(0, 1);
lcd.print(text.substring(pos, pos + 16) + " ");
pos = (pos + 1) % text.length();
}
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
ledState = !ledState;
digitalWrite(kuning2, ledState);
digitalWrite(kuning4, ledState);
}
if (currentMillis - prevMillisLampu >= 6000) {
prevMillisLampu = currentMillis;
switch (stepLampu) {
case 0:
digitalWrite(hijau3, HIGH);
digitalWrite(merah, HIGH);
digitalWrite(kuning3, LOW);
stepLampu = 1;
break;
case 1:
digitalWrite(hijau3, LOW);
digitalWrite(kuning3, HIGH);
stepLampu = 2;
break;
case 2:
digitalWrite(kuning3, LOW);
digitalWrite(merah3, HIGH);
digitalWrite(hijau, HIGH);
digitalWrite(merah, LOW);
stepLampu = 3;
break;
case 3:
digitalWrite(hijau, LOW);
digitalWrite(kuning, HIGH);
stepLampu = 4;
break;
case 4:
digitalWrite(kuning, LOW);
digitalWrite(merah3, LOW);
stepLampu = 0;
break;
}
}
}