Fix animation stuttering.
This commit is contained in:
parent
3cca26fe67
commit
3d65b42a63
@ -72,7 +72,7 @@ uint64_t old_time_ms = 0;
|
|||||||
// ms Counter Func
|
// ms Counter Func
|
||||||
ISR(TIM1_CAPT_vect)
|
ISR(TIM1_CAPT_vect)
|
||||||
{
|
{
|
||||||
++ms;
|
ms += 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NeoPixel Funcs
|
// NeoPixel Funcs
|
||||||
@ -447,9 +447,9 @@ void init()
|
|||||||
init_display();
|
init_display();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// TIM1 init
|
// TIM1 init - prescaler 64
|
||||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
|
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10);
|
||||||
ICR1 = (F_CPU / 1000) - 1;
|
ICR1 = (F_CPU / 64 / 100) - 1;
|
||||||
TIMSK1 = (1 << ICIE1);
|
TIMSK1 = (1 << ICIE1);
|
||||||
sei();
|
sei();
|
||||||
}
|
}
|
||||||
@ -459,33 +459,43 @@ void sun_and_moon(uint8_t count, uint8_t* idx, uint8_t colour, uint8_t led)
|
|||||||
uint8_t i;
|
uint8_t i;
|
||||||
uint8_t colour1[3] = {0xFF, 0x80, 0x00};
|
uint8_t colour1[3] = {0xFF, 0x80, 0x00};
|
||||||
uint8_t colour2[3] = {0x00, 0x80, 0xFF};
|
uint8_t colour2[3] = {0x00, 0x80, 0xFF};
|
||||||
|
uint8_t min;
|
||||||
|
uint8_t max;
|
||||||
|
|
||||||
if (*idx <= count / 2)
|
if (*idx <= count / 2)
|
||||||
{
|
{
|
||||||
for (i = 0; i < count; ++i)
|
min = *idx;
|
||||||
{
|
max = *idx + count / 2;
|
||||||
if ((i < *idx) || (i >= *idx + count / 2))
|
|
||||||
|
for (i = 0; i < min; ++i)
|
||||||
{
|
{
|
||||||
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||||
}
|
}
|
||||||
else
|
for (i = min; i < max; ++i)
|
||||||
{
|
{
|
||||||
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
||||||
}
|
}
|
||||||
}
|
for (i = max; i < count; ++i)
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
for (i = 0; i < count; ++i)
|
|
||||||
{
|
|
||||||
if ((i < *idx) && (i >= *idx - count / 2))
|
|
||||||
{
|
{
|
||||||
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
min = *idx - count / 2;
|
||||||
|
max = *idx;
|
||||||
|
|
||||||
|
for (i = 0; i < min; ++i)
|
||||||
{
|
{
|
||||||
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
||||||
}
|
}
|
||||||
|
for (i = min; i < max; ++i)
|
||||||
|
{
|
||||||
|
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||||
|
}
|
||||||
|
for (i = max; i < count; ++i)
|
||||||
|
{
|
||||||
|
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
(*idx)++;
|
(*idx)++;
|
||||||
@ -498,29 +508,32 @@ void clock_bg(uint8_t count, uint8_t* idx, uint8_t colour, uint8_t led)
|
|||||||
uint8_t colour1[3] = {0xFF, 0x80, 0x00};
|
uint8_t colour1[3] = {0xFF, 0x80, 0x00};
|
||||||
uint8_t colour2[3] = {0x00, 0x80, 0xFF};
|
uint8_t colour2[3] = {0x00, 0x80, 0xFF};
|
||||||
|
|
||||||
uint8_t* main_colour;
|
if (colour == 0)
|
||||||
uint8_t* bg_colour;
|
|
||||||
|
|
||||||
if (0 == colour)
|
|
||||||
{
|
{
|
||||||
main_colour = colour1;
|
|
||||||
bg_colour = colour2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
main_colour = colour2;
|
|
||||||
bg_colour = colour1;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < count; ++i)
|
for (i = 0; i < count; ++i)
|
||||||
{
|
{
|
||||||
if (i == *idx)
|
if (i == *idx)
|
||||||
{
|
{
|
||||||
send_pixel(main_colour[0], main_colour[1], main_colour[2], led);
|
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
send_pixel(bg_colour[0], bg_colour[1], bg_colour[2], led);
|
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
if (i == *idx)
|
||||||
|
{
|
||||||
|
send_pixel(colour2[0], colour2[1], colour2[2], led);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user