const int ledPins[] = {5, 18, 19, 21}; // Array pin untuk LED
const int buttonPins[] = {32, 33, 25}; // Array pin untuk tombol
const int potPin = 13; // Pin untuk potensiometer
int buttonStates[] = {0, 0, 0}; // Array status tombol
int ledState = 0; // Variabel status LED
int potValue = 0; // Variabel untuk nilai potensiometer
int ledIndex = 0; // Variabel untuk indeks LED yang sedang menyala
int direction = 1; // Arah gerakan lampu, 1 untuk ke kanan, -1 untuk ke kiri
int delayTime = 100; // Waktu delay awal
int minDelayTime = 20; // Waktu delay minimum (kecepatan maksimum)
int maxDelayTime = 500; // Waktu delay maksimum (kecepatan minimum)
void setup() {
// Inisialisasi pin LED sebagai OUTPUT
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Inisialisasi pin tombol sebagai INPUT_PULLUP
for (int i = 0; i < 3; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
}
void loop() {
// Baca nilai potensiometer dan ubah menjadi waktu delay
potValue = analogRead(potPin);
delayTime = map(potValue, 0, 4095, minDelayTime, maxDelayTime);
// Baca status tombol untuk mengubah arah gerakan lampu
for (int i = 0; i < 3; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
// Tombol ditekan, ubah arah gerakan
direction *= -1;
delay(100); // Debouncing
}
}
// Nyalakan LED sesuai dengan indeks
digitalWrite(ledPins[ledIndex], HIGH);
delay(delayTime);
digitalWrite(ledPins[ledIndex], LOW);
// Perbarui indeks LED
ledIndex += direction;
if (ledIndex >= 4) {
ledIndex = 0;
} else if (ledIndex < 0) {
ledIndex = 3;
}
}
Loading
esp32-devkit-v1
esp32-devkit-v1