From: R. Steve McKown Date: Mon, 5 Dec 2011 00:03:47 +0000 (-0700) Subject: Fading isn't working X-Git-Tag: 1.0~64 X-Git-Url: https://oss.titaniummirror.com/gitweb?p=rgblamp.git;a=commitdiff_plain;h=0ac9fec66784af2d9f9d074a2828ca896c51490e Fading isn't working --- diff --git a/main.c b/main.c index 21df3d7..4d11ee3 100644 --- a/main.c +++ b/main.c @@ -12,17 +12,17 @@ #include "buttons.h" #include "rgb.h" -#define random_rgb() (rand() >> 7) /* 0...255 */ -#define random_time() (rand() >> 5) /* 0...1024 */ -#define min_incolor_time() 512 -#define min_fade_time() 512 +#define random_rgb() rand() /* ~ (0...255) << 7 */ +#define random_time() (rand() >> 7) /* 0...255 */ +#define min_incolor_time() 100 +#define min_fade_time() 100 int main(void) { - unsigned char red = 0, grn = 0, blu = 0; //, wht = 0; - char fadestep_red, fadestep_grn, fadestep_blu; //, fadestep_wht; - unsigned char incolor_time = 0; - unsigned char fade_time = 0; + int red = 0, grn = 0, blu = 0; //, wht = 0; + int fadestep_red, fadestep_grn, fadestep_blu; //, fadestep_wht; + unsigned incolor_time = 0; + unsigned fade_time = 0; unsigned char fast = 0; pic_init(); @@ -39,9 +39,9 @@ int main(void) if ((buttons & (IN_ROCKERA | IN_ROCKERB))) { if (buttons & IN_PUSHBTN) { if (!fast) { + fast = 1; incolor_time = 0; fade_time = 0; - fast = 1; } else fast = 0; } @@ -51,12 +51,12 @@ int main(void) grn += fadestep_grn; blu += fadestep_blu; //wht += fadestep_wht; - rgb_set(red, grn, blu, 0); // wht); + rgb_set(red >> 7, grn >> 7, blu >> 7, 0); // wht >> 7); fade_time--; } else if (incolor_time) incolor_time--; else /* fade_time == 0 && incolor_time == 0 */ { - unsigned char newr, newg, newb, neww; + int newr, newg, newb, neww; /* Determine next color state */ newr = random_rgb(); @@ -78,12 +78,12 @@ int main(void) fade_time = 1 + fade_time / 8; } - fadestep_red = ((int)newr - red) / fade_time; - fadestep_grn = ((int)newg - red) / fade_time; - fadestep_blu = ((int)newb - red) / fade_time; - //fadestep_wht = ((int)neww - red) / fade_time; + fadestep_red = (newr - red) / fade_time; + fadestep_grn = (newg - red) / fade_time; + fadestep_blu = (newb - red) / fade_time; + //fadestep_wht = (neww - red) / fade_time; } - __delay_ms(10); + __delay_ms(50); } else { rgb_off(); buttons_sleep();