#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD dengan alamat I2C (0x27) dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin potensiometer
const int potPin = A0;
String line1 = " Bagas Rhazqa Satriawan "; // Baris pertama teks
String line2 = " INFORMATIKA SMAN 112 JKT "; // Baris kedua teks
int lengthLine1, lengthLine2;
int scrollPosition1 = 0;
int scrollPosition2 = 0;
void setup() {
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.backlight();
// Hitung panjang teks
lengthLine1 = line1.length();
lengthLine2 = line2.length();
}
void loop() {
// Baca nilai dari potensiometer untuk mengatur kecepatan scroll
int potValue = analogRead(potPin);
int scrollSpeed = map(potValue, 0, 1023, 100, 500); // Mengatur kecepatan scroll dari 100 hingga 500 ms
// Bersihkan LCD setiap loop
lcd.clear();
// Tampilkan teks berjalan pada baris pertama
lcd.setCursor(0, 0);
for (int i = 0; i < 16; i++) {
int charIndex1 = (scrollPosition1 + i) % lengthLine1; // Mengambil karakter berdasarkan posisi scroll untuk baris 1
lcd.print(line1[charIndex1]); // Tampilkan karakter baris 1
}
// Tampilkan teks berjalan pada baris kedua
lcd.setCursor(0, 1);
for (int i = 0; i < 16; i++) {
int charIndex2 = (scrollPosition2 + i) % lengthLine2; // Mengambil karakter berdasarkan posisi scroll untuk baris 2
lcd.print(line2[charIndex2]); // Tampilkan karakter baris 2
}
// Update posisi scroll untuk kedua baris
scrollPosition1++;
scrollPosition2++;
if (scrollPosition1 >= lengthLine1) {
scrollPosition1 = 0;
}
if (scrollPosition2 >= lengthLine2) {
scrollPosition2 = 0;
}
delay(scrollSpeed); // Delay berdasarkan nilai potensiometer
}