const int ledPins[] = {0, 1, 2, 3, 4, 5, 6, 7}; // LED pins
const int analogPin = A0; // Potentiometer pin
// Delay setup
unsigned long delayArea = 100;
unsigned long prevMillis = 0;
const unsigned long delayMs1 = 100;
const unsigned long delayMs2 = 250;
const unsigned long delayMs3 = 500;
const unsigned long delayMs4 = 750;
// Declare bitState variable here
byte bitState = 0b00000001;
void setup() {
// Set LED pins as outputs
for (int pin : ledPins) {
pinMode(pin, OUTPUT);
}
}
void loop() {
// Read potentiometer and map to delay range
int sensorReading = analogRead(analogPin);
int ledLevel = map(sensorReading, 0, 1023, 0, 4);
// Update delay based on potentiometer position
switch (ledLevel) {
case 0:
delayArea = delayMs1;
break;
case 1:
delayArea = delayMs2;
break;
case 2:
delayArea = delayMs3;
break;
default:
delayArea = delayMs4;
}
unsigned long currMillis = millis();
// Turn on and shift LED based on delay and bit state
if (currMillis - prevMillis >= delayArea) {
PORTD = bitState;
bitState <<= 1;
if (bitState == 0) { // Reset bitState when it becomes zero
bitState = 0b00000001;
}
for (int pin : ledPins) {
digitalWrite(pin, LOW);
}
prevMillis = currMillis;
}
}