byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // Создаем массив светодиодов
int ledDelay; // задержка между изменениями
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
int potPin = 2; // выбираем входной контакт для потенциометра
void setup() {
for (int x=0; x<10; x++) { // устанавливаем все пины на вывод
pinMode(ledPin[x], OUTPUT);
}
changeTime = millis();
}
void loop() {
ledDelay = analogRead(potPin); // считываем значение с потенциометра
if ((millis() - changeTime) > ledDelay) { // если с момента последнего изменения было ledDelay мс
changeLED();
changeTime = millis();
}
}
void changeLED() {
for (int x=0; x<10; x++) { // выключаем все светодиоды
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH); // включаем текущий светодиод
currentLED += direction; // увеличиваем на значение направления
// меняем направление, если дойдем до конца
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
}