Added additional animations.
This commit is contained in:
parent
145f6b9241
commit
4a6f4a4eb8
128
flame.ino
128
flame.ino
@ -9,14 +9,14 @@
|
||||
#define MAX(x, y) ((x) > (y) ? (x) : (y))
|
||||
|
||||
#define PIN_BUTTON 3 // Input pin für Button
|
||||
#define PIN_LED 2 // Output pin für Led-Strip
|
||||
#define NUM_PIXELS (5 * 64)
|
||||
#define PIN_LED 6 // Output pin für Led-Strip
|
||||
#define NUM_PIXELS (5 * 60)
|
||||
|
||||
#define NUM_MODES 6
|
||||
#define NUM_MODES 8
|
||||
|
||||
// Framebuffer-Dimensions. Depends on the tube radius
|
||||
#define FLAME_WIDTH 12
|
||||
#define FLAME_HEIGHT 27
|
||||
#define FLAME_WIDTH 10
|
||||
#define FLAME_HEIGHT 30
|
||||
|
||||
// Intensity buffer for flames and sparks
|
||||
static uint16_t flamebuffer[FLAME_HEIGHT][FLAME_WIDTH] = { { 0, }, };
|
||||
@ -90,7 +90,6 @@ render_blueyellow (const uint16_t t)
|
||||
{
|
||||
uint16_t i;
|
||||
uint8_t pos;
|
||||
|
||||
for (i = 0; i < NUM_PIXELS; i++)
|
||||
{
|
||||
pos = (t + i) % 64;
|
||||
@ -101,6 +100,22 @@ render_blueyellow (const uint16_t t)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
render_orangewhite (const uint16_t t)
|
||||
|
||||
// This is a copy of render_blueyellow with colors changed to C1024 orange and white
|
||||
{
|
||||
uint16_t i;
|
||||
uint8_t pos;
|
||||
for (i = 0; i < NUM_PIXELS; i++)
|
||||
{
|
||||
pos = (t + i) % 64;
|
||||
if (pos < 32)
|
||||
pixels.setPixelColor (i, 255, 200, 200);
|
||||
else
|
||||
pixels.setPixelColor (i, 192, 72, 11);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
render_rainbow (const uint16_t t)
|
||||
@ -195,6 +210,7 @@ render_rgbsparks (const uint16_t t)
|
||||
flamebuffer[y][x] = rand() % (255 * 3);
|
||||
|
||||
for (y = FLAME_HEIGHT; y > 0; )
|
||||
|
||||
{
|
||||
y--;
|
||||
|
||||
@ -217,7 +233,7 @@ render_rgbsparks (const uint16_t t)
|
||||
}
|
||||
|
||||
// Deal with multiples of three, this ensures the same base color
|
||||
// the condition here is false always, if enabed this makes the
|
||||
// the condition here is false always, if enabled this makes the
|
||||
// colorful sparks go up.
|
||||
if (t % 6 == 7)
|
||||
{
|
||||
@ -235,6 +251,82 @@ render_rgbsparks (const uint16_t t)
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
render_whitesparks (const uint16_t t)
|
||||
{
|
||||
uint8_t x, y;
|
||||
|
||||
// This is the blatantly bad copy of render_rgbparks but does what I want ¯\_(ツ)_/¯
|
||||
|
||||
x = rand() % FLAME_WIDTH;
|
||||
y = rand() % FLAME_HEIGHT;
|
||||
flamebuffer[y][x] = rand() % (255 * 3);
|
||||
|
||||
for (y = FLAME_HEIGHT; y > 0; )
|
||||
|
||||
{
|
||||
y--;
|
||||
|
||||
for (x = 0; x < FLAME_WIDTH; x++)
|
||||
{
|
||||
switch (flamebuffer[y][x] % 3)
|
||||
{
|
||||
case 0:
|
||||
pixels.setPixelColor (y * FLAME_WIDTH + x,
|
||||
glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3]);
|
||||
break;
|
||||
case 1:
|
||||
pixels.setPixelColor (y * FLAME_WIDTH + x,
|
||||
glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3]);
|
||||
break;
|
||||
case 2:
|
||||
pixels.setPixelColor (y * FLAME_WIDTH + x,
|
||||
glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3], glut[flamebuffer[y][x] / 3]);
|
||||
break;
|
||||
}
|
||||
|
||||
// the condition here is false always, if enabled this makes the
|
||||
// white sparks go up.
|
||||
if (t % 6 == 7)
|
||||
{
|
||||
if (y > 1)
|
||||
flamebuffer[y][x] = MAX (9, flamebuffer[y-1][x]) - 9;
|
||||
else
|
||||
flamebuffer[y][x] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
flamebuffer[y][x] = MAX (9, flamebuffer[y][x]) - 9;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
render_orangepulse (const uint16_t t)
|
||||
|
||||
// This is a C1024 orange full-torch glow effect
|
||||
{
|
||||
uint16_t i;
|
||||
uint8_t pos;
|
||||
// uint8_t
|
||||
// for (i = 0; i < NUM_PIXELS; i++)
|
||||
// {
|
||||
// pos = (t + i) % 64;
|
||||
// if (pos < 32)
|
||||
// pixels.setPixelColor (i, 255, 200, 200);
|
||||
// else
|
||||
// pixels.setPixelColor (i, 192, 72, 11);
|
||||
// }
|
||||
for (i = 0; i < NUM_PIXELS; i++)
|
||||
{
|
||||
pixels.setPixelColor (i, 195, 72, 11);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Arduino init.
|
||||
|
||||
void
|
||||
@ -349,25 +441,41 @@ loop ()
|
||||
break;
|
||||
|
||||
case 2:
|
||||
render_rainbow (t);
|
||||
render_orangewhite (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
render_redblue (t);
|
||||
render_rainbow (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
render_redblue (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
render_kitt (t);
|
||||
delay_value = 20;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
case 6:
|
||||
render_rgbsparks (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
case 7:
|
||||
render_whitesparks (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
// Inactive for now due to RENDER_MODES:
|
||||
case 8:
|
||||
render_orangepulse (t);
|
||||
delay_value = 10;
|
||||
break;
|
||||
|
||||
default:
|
||||
render_flame ();
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user