My projects

Addressable led strips controller

I have several WS2812 addressable led strips that I can control using ESP32 microcontrollers running my own software (in C++).

When using these as normal ambient lights, I simply use the WLED software. This also runs on ESP32s and uses a web interface or smartphone app for configuration; It's easy and fancy.

Led Player

However, since I wanted to be able to do fast updates (1ms or even faster) and potentially make specific complex patterns, WLED was insufficient and I wrote my own program using the FastLED library.

A led plan can be constructed as a tree structure, with basic building blocks such as a simple solid colour for an entire segment, gradients, pulses, etc. These can be combined as a sequence (one after the other), by dividing into segments, or by blending them together.

When a plan is played it calculates the right colour for every single led on the strip, for that specific moment in time.

Handheld device

On top of that, I also made a handheld remote controller that can be used to set the entire strip to a specific colour.

The device, also utilizing an ESP32, has several hardware sliders, buttons and a display. The buttons can be used to navigate through some menu's and adjust the settings. The sliders are the main way to set the colour values and brightness, but since the sliding potentiometers I used are of quite low quality, I also made it possible to lock the sliders and use the buttons for precise control.

Other functionalities are:

  • Switching between RGB/HSV modes.
  • An auto update mode.
  • Persisting a colour to be applied at boot.
  • A preview rectangle on the display.

On startup, the ESP32 will look for a specific Wi-Fi network. If it doesn't find it, it will create it. The commands are sent as UDP packages. The display is interfaced with using SPI.

Github links:

Dance Trainer

This is a tool to facilitate training dance sequences from a video. A speed control and a toggle to mirror the video allow the user to make it easier to copy the moves of the video. Closer inspection can be done using the frame step buttons.

The main feature is that it can use a webcam to record the user while playing the video, allowing a side-by-side comparison. In the side-by-side view the playback controls are synchronized for both videos.

This application is written in C#, using WinUI3.

Sirius Performance positionings

A local dance studio did a performance called Sirius (referring to the star). I was asked to make a nice visualization of the dancer's positions with a star theme.

I wrote a Python script that generates an SVG (and a png export) based on a defined logical structure. This made it easy to update whenever there were changes.

The background photo was also made by me; I chose the constellations used as group names so they're close together. (There were originally 5 groups, but Perseus was dropped)

View Image View Image

Leuven Volley

My first volleyball sessions were with the KU Leuven's official sessions. The beginners had their own field but were mainly left alone. As I felt the need to practice technique instead of just playing, I gathered some fellow beginners and made a practice group.

This started slow, the first practice session was me on my own, then with one other person. When we made a nice combo in the next official session a few others joined in. Every session thereafter I asked all new people if they were interested in joining, slowly growing the group.

At the start we mainly had to do daytime sessions, but eventually we had so many participants to be able to do evening sessions too, several times a week. What started as a practice group had evolved into one of the main recreational Volleyball groups at the university.

To make this easier to organize I created a website where people can see an overview of the sessions and sign up for them. If the session is full already, they will be placed on a reserve list. If someone from the main list leaves someone from the reserve will take that place and get an email notification about it. It's also possible to make private sessions only visible for people of a specific group, or by invitation. As a lot of international students join the sessions, the website is fully bilingual.

The website was hosted on various cloud platforms in the past, but now on a friend's server cluster.

View Image View Image View Image