#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();
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;
}
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();
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();