wht.remainder = neww - (wht.value + wht.increment * fade_steps);
/* Start the fade timer */
+ tmr_stop(TMR_INCOLOR);
tmr_startPeriodic(TMR_FADE, 1); /* 32.768 msec */
}
{
dbgpin_high();
on = 1;
- rgb_on();
red.value = 0;
grn.value = 0;
blu.value = 0;
wht.value = 0;
+ leds_set(red, grn, blu, wht);
+ rgb_on();
start_fade();
+ btn_pben();
}
void turnOff()
void pb_task()
{
- if (btn_pb() == BTN_PB_UP) {
- speed = (speed + 1) & ~4;
- fade_steps = 0;
+ /* Is this task running nearly continuously? */
+ if (on) {
+ if (btn_pb() == BTN_PB_UP) {
+ speed = (speed + 1) & 3;
+ start_fade();
+ }
+ btn_pben();
}
- btn_pben();
}
void rs_task()
leds_set(red, grn, blu, wht);
}
-void auto_onoff_task()
+void auto_offon_task()
{
if (on) {
turnOff();
if (btn_rs() == BTN_RS_RIGHT)
- tmr_start(TMR_AUTO_OFFON, AUTO_OFF_COUNT);
+ tmr_start(TMR_AUTO_OFFON, AUTO_ON_COUNT);
} else /* off */ {
turnOn();
if (btn_rs() == BTN_RS_RIGHT)
- tmr_start(TMR_AUTO_OFFON, AUTO_ON_COUNT);
+ tmr_start(TMR_AUTO_OFFON, AUTO_OFF_COUNT);
}
}
{
dbgpin_high();
srand((adc_random() << 8) + adc_random());
- pb_task();
rs_task();
}
start_fade();
break;
case TASK_AUTO_OFFON: /* auto on/off timer has fired */
- auto_onoff_task();
+ auto_offon_task();
break;
}
}