Why I built it
I've always been fascinated by programmable LEDs. This is a fun excuse to mess with simple hardware circuits, put my years of writing low-level C to use, and build physical desk art that sets my desk apart.
What it does
A collection of sketches for WS2812B LED matrix panels, chained or stacked into different sizes:
- Snake that plays itself, rewritten over several versions. The latest adds an AI that avoids trapping itself.
- Game of Life, Conway's cellular automaton.
- Scrolling messages, a clock, pixel art, and a color test for checking new panels.
- Vitals, which streams my Old School RuneScape Hitpoints and Prayer onto the panels in real time as two fill bars, glowing white when boosted.
How it's built
- Code
- Arduino C++ with the FastLED library, plus TimeLib for the clock. Vitals has three parts: a Java RuneLite plugin that reads the stats and sends them over UDP, a Python bridge that turns them into percentages and relays them over USB serial, and the sketch that draws the bars.
- Hardware
- An Arduino driving 8×32 WS2812B panels. Vitals runs on an Arduino Mega 2560 with two panels stacked into a 16×32 display.
- Deploying
- Sketches are compiled and flashed over USB with
arduino-cli. There's nothing hosted.