Add simple smooth animation
This commit is contained in:
parent
187c915799
commit
5a45524af3
|
@ -1 +1 @@
|
|||
361
|
||||
373
|
||||
|
|
|
@ -286,6 +286,14 @@ LED_Colour_t Animation_GetColour(unsigned int step, unsigned int brightness)
|
|||
void Animation_DrawGradient(unsigned int step_bottom, unsigned int step_top,
|
||||
unsigned int brightness)
|
||||
{
|
||||
if(step_bottom >= ANIMATION_STEPS)
|
||||
{
|
||||
step_bottom = 2 * ANIMATION_STEPS - step_bottom;
|
||||
}
|
||||
if(step_top >= ANIMATION_STEPS)
|
||||
{
|
||||
step_top = 2 * ANIMATION_STEPS - step_top;
|
||||
}
|
||||
for(int i = 0; i < LED_COUNT; i++)
|
||||
{
|
||||
unsigned int step = ((LED_COUNT - 1 - i) * step_bottom + i * step_top)
|
||||
|
@ -301,7 +309,17 @@ void Animation_Poll(void)
|
|||
{
|
||||
return;
|
||||
}
|
||||
LED_FrameFlag = false;
|
||||
Animation_DrawGradient(60000, 50000, LightSensor_RelativeBrightness);
|
||||
|
||||
static unsigned int bottom = 0;
|
||||
static unsigned int top = 0;
|
||||
|
||||
bottom += ANIMATION_STEPS / ANIMATION_DURATION_BOTTOM;
|
||||
top += ANIMATION_STEPS / ANIMATION_DURATION_TOP;
|
||||
|
||||
bottom %= 2 * ANIMATION_STEPS;
|
||||
top %= 2 * ANIMATION_STEPS;
|
||||
|
||||
Animation_DrawGradient(bottom, top, LightSensor_RelativeBrightness);
|
||||
LED_Commit();
|
||||
LED_FrameFlag = false;
|
||||
}
|
|
@ -4,6 +4,11 @@
|
|||
|
||||
#define ANIMATION_STEPS 65535
|
||||
|
||||
#define ANIMATION_DURATION_BOTTOM \
|
||||
1000
|
||||
|
||||
#define ANIMATION_DURATION_TOP 5000
|
||||
|
||||
extern const unsigned int Animation_LEDOrder[LED_COUNT];
|
||||
|
||||
void Animation_Poll(void);
|
Loading…
Reference in a new issue