]> oss.titaniummirror.com Git - rgblamp.git/commitdiff
Fading isn't working
authorR. Steve McKown <rsmckown@gmail.com>
Mon, 5 Dec 2011 00:03:47 +0000 (17:03 -0700)
committerR. Steve McKown <rsmckown@gmail.com>
Mon, 5 Dec 2011 00:04:46 +0000 (17:04 -0700)
main.c

diff --git a/main.c b/main.c
index 21df3d73aff789b8ccd3d06e1e911c7d637059cc..4d11ee352810a4d6f5874eb9d69df1eaf4dfc951 100644 (file)
--- a/main.c
+++ b/main.c
 #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();