Proyecto con NEOPIXEL , duda con bucle de aumento de valores RGB.

Hola, a ver si alguien puede ayudarme con esta dudilla.

Me gustaría saber si puedo conseguir realizar un aumento de tonalidad (acercarme más al blanco), pasando de un pixel en un pixel este aumento, de manera controlada.

Lo siguiente es parte de un intento de código que he intentado realizar, obvio es que no me ha llegado a funcionar :confused: .

Espero que se me pueda ayudar y muchas gracias por vuestro tiempo. :slight_smile:

void aclarar(int r, int g, int b, int wait ) {
	int i = 0;
	colorWipe(strip.Color(r, g, b), 100);
	while (!(r = g = b = 255)) {
		if (i == NUMLEDS) {
			i -= NUMLEDS;
		}
		if (r != 255) {
			r++;
		}
		if (g != 255) {
			g++;
		}
		if (b != 255) {
			b++;
		}
		strip.setPixelColor(i, strip.Color(r, g, b));
		strip.show();
		delay(wait);
		i++;
	}
}

No he analizado el resto de la función, pero "salta a la vista" que la condición del

while

la tienes mal:

while (!(r = g = b = 255)) {

No es lo mismo el operador de asignación (

=

) que el operador de igualdad (

==

).

Lo que te está pasando es que se le asigna el valor

255

a las tres variables a la vez (

r

,

g

y

b

). Para luego verificar si el valor (

255

) es cero. Como 255 no es cero entonces no se cumple la condición y nunca se ejecuta el cuerpo del

while

.

Prueba con:

while ( !((r == 255) && (g == 255) && (b == 255)) ) {

O con lo que sería equivalente:

while ( (r != 255) || (g != 255) || (b != 255) ) {

Gracias por tu contestación :o , me siento un poco humillado ante tal error de novato... muchas gracias ahora corre mejor que antes!!