GKShow
KRYSTIAN DUŻYŃSKI
Hackerspace Kraków
Project info
Date February 2014 - April 2014
Technologies
  • Embedded Linux with custom kernel
  • ARM Cortex-A9
  • DMX512
  • C++, Python

Overview

Dedicated lighting system for Galeria Krakowska made just because we can.

Hardware

Single board computer based on ARM Cortex A9 which connects via custom USART->RS485 converter to DMX512 infrastructure.

Software

Dedicated and extendable system for displaying custom animations and shows. System consists of driver used to send frame data to DMX splitter, sequencer which covers all effects processing and sequencing them. Sequencer can load native effects (as .so library) or written in Python through Python C API.

Promo video

Sample effects

Python effect
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import driver, math, time
from scene import *

def init():
    global tim, tim2, sc
    tim = 0
    tim2 = 0
    sc = Scene()

def step(dt):
    global tim, tim2, sc

    tim += dt * 5
    tim2 -= dt * 4

    sc.zero()

    x = math.sin(tim) * 10 + 27 + 31 / 2 + 1
    y = math.cos(tim) * 1.5 + 0.5
    sc.diffuse(x, y, 9, 1.5, 255, 0, 0)

    x = math.sin(tim2) * 6 + 27 / 2 - 1
    y = math.cos(tim2) * 1.6 + 0.5
    sc.diffuse(x, y, 9, 1.5, 0, 255, 0)

    return sc
Native effect (C++)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include <libeffect.h>

Scene s;
float tim;

void init()
{
    tim = 0;
    s.zero();
}
Scene* step(float dt)
{
    tim += dt * 15;

    s.zero();
    s.setPixel((int)tim % 30, 0, 255, 0, (int)tim % 255);
    s.setRow(1, 0, 255, 0);

    return &s;
}