#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi PWM PCA9685
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);
// Inisialisasi LCD 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2); // Ganti alamat jika perlu
// Array lampu untuk menyimpan status LED
byte lampu[] = {
B01110,
B10001,
B10001,
B10001,
B10001,
B01110,
B01110,
B01110
};
void setup() {
// Inisialisasi komunikasi I2C untuk PCA9685
Wire.begin();
pwm.begin();
pwm.setPWMFreq(60); // Set frekuensi PWM
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.setBacklight(1);
lcd.clear();
}
void loop() {
// Animasi - menampilkan byte lampu pada LCD
for (int i = 0; i < 8; i++) {
// Menampilkan byte lampu di LCD
lcd.clear();
lcd.setCursor(0, 0);
for (int j = 0; j < 8; j++) {
if (bitRead(lampu[i], j)) {
lcd.print("*"); // Jika bit=1, tampilkan '*'
} else {
lcd.print(" "); // Jika bit=0, tampilkan spasi
}
}
// Atur LED PCA9685 sesuai dengan animasi
for (int ch = 0; ch < 16; ch++) {
if (bitRead(lampu[i], ch % 8)) { // Jika bit=1, hidupkan LED
pwm.setPWM(ch, 4095); // LED ON (nilai maksimum PWM)
} else {
pwm.setPWM(ch, 0); // LED OFF
}
}
delay(500); // Delay antar frame animasi
}
}