Moin,
ich habe eine logikfrage zu meinem Code, die mich gerade in den Wahnsinn treibt, vielleicht kann mit ja jemand von euch meinen Denkfehler aufzeigen.
Ich habe ein LED-Band auf dem Lichter blinken sollen.
Die LEDs adressiere ich mit der Adafruit pixel Lib und einem Array:
int TrafoArray[]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
Jetzt sollen alle 15 LEDs nacheinander grün blinken:
void trafo()
{
static byte trafoledpos =0;
static unsigned long lastmillis5 = 0;
if(szenario3 ==1){
if(millis() - lastmillis5 >= 400){
lastmillis5 = millis();
pixels.setPixelColor(TrafoArray[trafoledpos], pixels.Color(72, 212, 5));
if(trafoledpos < 14){
trafoledpos++;
}
if(trafoledpos ==14){
trafoledpos =0;
}
}
if(millis() - lastmillis5 >= 200){
for(int i=0; i <15; i++){
pixels.setPixelColor(TrafoArray[i], pixels.Color(0, 0, 0));
}
}
}
if(szenario1 ==1|| szenario2 ==1){
for(int i=0; i <15; i++){
pixels.setPixelColor(TrafoArray[i], pixels.Color(0, 0, 0));
}
}
}
Jetzt die Frage: Warum geht die letzte LED nur an, wenn ich
if(trafoledpos < 15){
trafoledpos++;
}
if(trafoledpos ==15){
trafoledpos =0;
schreibe? Arrays sind doch 0 indiziert? Wenn trafoledpos ==13 ist, sollte der code doch mit 14, also der letzten LEDposition im Array noch durchlaufen und die letzte anschalten?