int timer = 35; // Delay time between steps
void setup() {
// Set pins 2 to 10 as outputs
DDRD |= 0b11111100; // Pins 2-7 (PORTD)
DDRB |= 0b00000011; // Pins 8-9 (PORTB)
}
void loop() {
// Move LEDs forward (pins 2-10)
for (int thisPin = 2; thisPin <= 10; thisPin++) {
setPin(thisPin, HIGH);
delay(timer);
setPin(thisPin, LOW);
}
// Move LEDs backward (pins 10-2)
for (int thisPin = 10; thisPin >= 2; thisPin--) {
setPin(thisPin, HIGH);
delay(timer);
setPin(thisPin, LOW);
}
}
// Function to set pin HIGH or LOW using direct port manipulation
void setPin(int pin, bool state) {
if (pin >= 2 && pin <= 7) {
// PORTD (pins 2-7)
if (state) PORTD |= (1 << pin);
else PORTD &= ~(1 << pin);
} else if (pin >= 8 && pin <= 9) {
// PORTB (pins 8-9)
if (state) PORTB |= (1 << (pin - 8));
else PORTB &= ~(1 << (pin - 8));
}
}