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
|
||||
ISR(TIM1_CAPT_vect)
|
||||
{
|
||||
++ms;
|
||||
ms += 100;
|
||||
}
|
||||
|
||||
// NeoPixel Funcs
|
||||
@ -447,9 +447,9 @@ void init()
|
||||
init_display();
|
||||
#endif
|
||||
|
||||
// TIM1 init
|
||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS10);
|
||||
ICR1 = (F_CPU / 1000) - 1;
|
||||
// TIM1 init - prescaler 64
|
||||
TCCR1B = (1 << WGM13) | (1 << WGM12) | (1 << CS11) | (1 << CS10);
|
||||
ICR1 = (F_CPU / 64 / 100) - 1;
|
||||
TIMSK1 = (1 << ICIE1);
|
||||
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 colour1[3] = {0xFF, 0x80, 0x00};
|
||||
uint8_t colour2[3] = {0x00, 0x80, 0xFF};
|
||||
uint8_t min;
|
||||
uint8_t max;
|
||||
|
||||
if (*idx <= count / 2)
|
||||
{
|
||||
for (i = 0; i < count; ++i)
|
||||
{
|
||||
if ((i < *idx) || (i >= *idx + count / 2))
|
||||
min = *idx;
|
||||
max = *idx + count / 2;
|
||||
|
||||
for (i = 0; i < min; ++i)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < count; ++i)
|
||||
{
|
||||
if ((i < *idx) && (i >= *idx - count / 2))
|
||||
for (i = max; i < count; ++i)
|
||||
{
|
||||
send_pixel(colour1[0], colour1[1], colour1[2], led);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
min = *idx - count / 2;
|
||||
max = *idx;
|
||||
|
||||
for (i = 0; i < min; ++i)
|
||||
{
|
||||
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)++;
|
||||
@ -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 colour2[3] = {0x00, 0x80, 0xFF};
|
||||
|
||||
uint8_t* main_colour;
|
||||
uint8_t* bg_colour;
|
||||
|
||||
if (0 == colour)
|
||||
if (colour == 0)
|
||||
{
|
||||
main_colour = colour1;
|
||||
bg_colour = colour2;
|
||||
}
|
||||
else
|
||||
{
|
||||
main_colour = colour2;
|
||||
bg_colour = colour1;
|
||||
}
|
||||
|
||||
for (i = 0; i < count; ++i)
|
||||
{
|
||||
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
|
||||
{
|
||||
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