Nabend
Ich möchte das alle Leds aus dem Array über die millis() verzögert auf High gehen.
Jedoch geht nur die an Pin 2 an, oder wenn die if Zeile oberhalb der for Schleife sitzt alle an.
Wo hab ich hier den Denkfehler...
MfG Ronny
int ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
unsigned long previousMillis = 0;
const long interval = 500;
void setup() {
for (int i = 0; i < sizeof (ledPin); i++) {
pinMode(ledPin[i], OUTPUT);
}
}
void loop() {
unsigned long currentMillis = millis();
for (int i = 0; i < sizeof (ledPin); i++) {
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin[i], HIGH);
}
}
}
Da ist noch ein anderer Schnitzer. Die for-Schleife zählt unabhängig vom millis()-Vergleich die Pins hoch. Eigentlich braucht es einen eigenen Zähler der erst nach Ablauf des millis()-Vergleiches erhöht wird.
int ledPin[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
const byte pinNum = sizeof(ledPin)/sizeof(ledPin[0]);
byte count = 0;
unsigned long previousMillis = 0;
const long interval = 500;
void setup() {
for (int i = 0; i < pinNum; i++) {
pinMode(ledPin[i], OUTPUT);
}
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(ledPin[count], HIGH);
count++;
if(count == pinNum) count = 0;
}
}