#include #include #include #include #include #define true 1 #define false 0 #define RED (1<>8; i >>= 16; p = 65535 - s * 256; q = 65535 - s * f; t = 65535 - s * (256 - f); switch( i ) { case 0: R = 65535; G = t; B = p; break; case 1: R = q; G = 65535; B = p; break; case 2: R = p; G = 65535; B = t; break; case 3: R = p; G = q; B = 65535; break; case 4: R = t; G = p; B = 65535; break; default: R = 65535; G = p; B = q; break; // case 5: } nr=pgm_read_word(&table[R>>6]); ng=pgm_read_word(&table[G>>6]); nb=pgm_read_word(&table[B>>6]); } SIGNAL(TIMER0_OVF_vect) { if(counter>=1024) { counter = 0; r = nr; g = ng; b = nb; h += nh; } if(running == true) { if(counter> 6) >> 2; if(s>250) s = 255; // Get speed ADMUX = 1; ADCSRA |= (1<>= 8; if(speed<8) running=false; else running=true; if(speed > 32) nh=(speed-32)>>1; // Change division factor for limiting max speed hsv_to_rgb(); } return 0; }