Estoy intentando generar un valor RGB de color aleatorio - > iluminar RGB led - > espere 5 minutos - > generar el siguiente color aleatorio - > se desvanecen del color antiguo al nuevo.
- Para mostrar el color en el LED, estoy usando una salida PWM de 3 canales en ATMEGA8.
- Para generar el color aleatorio, estoy usando TIMER0 como valor semilla y luego generando un valor aleatorio según la fórmula
return (unsigned char)(rand()/(RAND_MAX/255 + 1));
para los 3 canales.
Ahora, como también quiero mostrar los colores intermedios (usando PWM), esto es lo que estoy pensando hacer:
- pasos de transición totales = 500
- tiempo para mostrar cada color intermedio = 5 ms
- redStep = (finalred - initalred) / 500 (igual para verde y azul)
- para bucle (1 a 500): muestre color intialred + (counter * redStep)
Mi pregunta es: ¿es esta la mejor manera de hacer la transición entre los colores para producir los colores más agradables estéticamente (sin parpadeos, etc.)? ¿Alguna idea sobre el número de pasos de transición y el tiempo de espera?