Wpis z mikrobloga

#arduino Mam mały kłopot z if w kodzie arduino Czemu licząc for-em od 0 do 7 i potem porównując if i < 3 if jest true cały czas a licząć od 7 do 0 if sprawdza poprawnie i dla wartości i < 3 jest true a dla pozostałych false ?

whiteno = 3

Pierszy void liczy od 7 do 0 drugi od 0 do 7

void CenterToOutside(byte red, byte green, byte blue, byte white, int whiteno,int SpeedDelay) {
for(int i =((strip.numPixels())/2); i>=0; i--) {
if (i < whiteno ){//or i > (strip.numPixels()-whiteno) ) {
white = 0;
}
String ala = String(i) + "-" + String(whiteno) + "-" + String(white) ;
Serial.println(ala);
strip.setPixelColor(i, red, green, blue,white);
strip.setPixelColor(strip.numPixels()-i, red, green, blue,white);
strip.show();
delay(SpeedDelay);
}
}

void OutsideToCenter(byte red, byte green, byte blue, byte white, int whiteno, int SpeedDelay) {
for(int i = 0; i<=((strip.numPixels())/2); i++) {
if (i < whiteno){ //or strip.numPixels()-i > (strip.numPixels()-whiteno) ) {
white = 0;
}
String ala = String(i) + "-" + String(whiteno) + "-" + String(white) ;
Serial.println(ala);
strip.setPixelColor(i, red, green, blue,white);
strip.setPixelColor(strip.numPixels()-i, red, green, blue,white);
strip.show();
delay(SpeedDelay);
}
}

Wyniki z if-a są odwortnie pierwszy jest z dolnej funkcji drugi z górnej

rgb,100,0,0,88,0

0-3-0
1-3-0
2-3-0
3-3-0
4-3-0
5-3-0
6-3-0
7-3-0
rgb,100,0,0,81,0

7-3-202
6-3-202
5-3-202
4-3-202
3-3-202
2-3-0
1-3-0
0-3-0
  • 3
@S0Cool: Jak zmienię w tym ifie znak na przeciwny to mam wynik :

0-3-195
1-3-195
2-3-195
3-3-195
4-3-0
5-3-0
6-3-0
7-3-0

Czyli działa poprawnie. Wartość white przychodzi z RS232 ustawiana dimmerem w domoticz dlatego jest w każdym przykładzie inna, ciężko mi trafić dimmerem dokładnie w to samo miejsce. I na pewno nie jest zerowa. Obecnie wywoływane są obie te funkcje na przemian raz jedna raz druga (2 różne efekty zapalania led)