Masih menggunakan skema pada proyek 05, proyek LED Chase Effect akan menggunakan potentiometer untuk mengubah kecepatan LED.
Komponen
- 4.7 K.Ohm Rotaray Potentiometer
Skema

Sketch
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Create array for LED pins
int ledDelay; // delay between changes
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
int potPin = 2; // select the input pin for the potentiomete
void setup() {
for (int x=0; x<10; x++) { // set all pins to output
pinMode(ledPin[x], OUTPUT);
}
changeTime = millis();
}
void loop() {
ledDelay = analogRead(potPin); // read the value from the pot
if ((millis() - changeTime) > ledDelay) { // if it has been ledDelay ms since last change
changeLED();
changeTime = millis();
}
}
void changeLED() {
for (int x=0; x<10; x++) { // turn off all LED's
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH); // turn on the current LED
currentLED += direction; // increment by the direction value
// change direction if we reach the end
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}
Penjelasan SKetch
Sketch masih mirip dengan proyek sebelumnya, hanya ditambahkan potentiometer pada sisi hardware dan pada sisi program ditambahkan perintah untuk membaca input dari potenstiometer. Input akan digunakan untuk mengatur kecepatan LED.
Perintah yang digunakan untuk membaca input adalah analogRead.
Analog pin dapat membaca voltage dari 0 – 5 volts, dalam integer dari 0 (0 volts) sampai 1.023 (5 volts). Berarti resolusi 4.9mV per unit (5 volts / 1.024 units).
ledDelay = analogRead(potPin);
Adjust delay diantara 0 dan 1023 millisecond dengan menggunakan nilai dari ledDelay yang diperoleh dari input potentiometer. Perhatikan kita tidak perlu mengatur analog sebagai input atau output seperti juga dengan digital pin.
Tantangan Programming
- Efek bouncing. Led bergerak dari kiri ke kanan, lalu langsung start dari kanan ke kiri.
- Efek bouncing bola yang makin lama makin melemah.