I wish I had a video to show you how awesome this is. I just checked it in.
My lights can now fade between colors. The code is still in a partially hideous state, but It works! After a while of procrastinating, I finally decided to just do it.
I fought with it for an hour or so, and got it to work properly after a while.
I'm probably doing it poorly because of my decision to push fading onto the raspberry pi, but it works.
Anyways, my idea was to make them fade nonlinearly.
#fade in 64 steps. Convenient, since the arduino has 256 steps of pwm, and 64^(4/3) #is 256. exp = 4/3.0 for i in range(65): current = list() #fade each of the 3 colors for c in range(3): if end[c] > start[c]: current.append(int((end[c]-start[c])/256.0 * i ** exp + start[c])) else: current.append(int(start[c] - (start[c]-end[c])/255.0 * i ** exp))As usual, the code is on Github. I haven't implemented fading in the web interface yet, but that's on my to-do list.