// Anzahl der LEDs im Blinker
const int NLED = 7;
// Periodendauer des Blinker
// 1,5 Hz ± 0,5 Hz entspricht 500ms ... 1000ms Periodendauer
const int TBLINKER = 800;
// Zeit für alle LEDs aus (1/3 der Periodendauer)
const int TBLACK = TBLINKER / 3;
// Takt für LED-Zustandsänderungen
const int TSTEP = (TBLINKER*2/3)/NLED;
// Anschluesse der LEDs als Vektor
const int LED[NLED] = {13, 12, 11, 10, 9, 8, 7};
// Grundzustand herstllen
void setup() {
for ( int i = 0; i < NLED; i++) {
pinMode(LED[i], OUTPUT);
}
}
// Zuständer der Ausgabepins setzen
void ledrow(byte leds) {
for ( int i = 0; i < NLED; i++) {
digitalWrite(LED[i], bitRead(leds, i));
}
}
// Zustand wenn i LEDs ab der LowBit-Seite an sein sollen
// 0...01...1
byte nled (int i) {
return (1<<i)-1;
}
// Schleife für den Blinker
void loop() {
// Blinker 0..0, 0..01, 0..011, ... , 0..011..11
for ( int i = 1; i <= NLED; i++) {
ledrow(nled(i));
delay(TSTEP); // verbleibe in diesem Zustand
}
// und alle aus ...
ledrow(nled(0));
delay(TBLACK);
}