Building a Minecraft lamp
Building a Minecraft lamp
The kid of a person in my social sphere is turning 10. He has epilepsy and is a big fan of Minecraft. My girlfriend and I decided to create a surprise for his birthday, since we have a 3D Printer and I’m always looking for excuses to use it.
After searching Printables for a couple of minutes, I found the perfect thing: A Minecraft Lamp. I always wanted something like this when I was younger, so it’s about time I create one (or maybe two) of these. After looking through my parts, I had everything I needed
- Some black PLA
- An ESP8266
- Leftover WS2812B LEDs
- Transparent Paper from my girlfriends craft box
The Build
The build was surprisingly uneventful. Every part was easily printable. I was not able to include the face meshes which would improve the looks, but we simpy painted some details on the faces. The sides already looked good. While soldering, I felt somewhat good at it for the first time. Finally.
We used an old toilet paper roll as a cylinder on which I hotglued the LEDs. The ESP fit perfectly inside the roll.
Before assembling everything, we needed to glue the transparent paper over the holes, which went okay. The sides of the paper starting to peel a bit, but it’s not too bad. Now everything is ready for the final assemby. I hotglued the roll to the bottom of the lamp. All faces were easily snapped together and the lamp was ready. However, there is one thing I left out so far.
The Software
I wanted to use WLED, since I have a lot of positive experiences using it. It’s a great piece of software. There is only one problem: The epilepsy of the kid. I don’t want to trigger a seizure. No way I want to do that. So I searched for a way to disable effects in the settings. I found nothing. I also did not find other software that allows for remote control of the LEDs while not having harmful effects. The only solution I saw was to create a custom build of WLED, removing most of the effects. At the same time, I wanted to translate the GUI to German, since the kid is German and I want to make it as easy as possible for him to use the lamp.
Forking WLED
My initial goal was to completely remove the unwanted effects from the code. This turned out to be a whole lot of work. So i went and took the easy path, which lead to the same endresult. Inside FX.cpp
is a long list of commands, which register effects. It is sufficient, to remove unwanted (read: almost all of them). entries.
The lines looks like this:
addEffect(FX_MODE_BLINK, &mode_blink, _data_FX_MODE_BLINK);
So it is easily recognizible, which effect is registered by which line. I started by removing every effect other than ‘Solid’ and ‘Breathe’. After completing the project, I looked at some more effects; since I could better see how the effects look on the finished lamp. So I readded some effects which allowed for some more variety. The current list of effects is:
- Solid
- Breathe
- Sweep
- Sweep Random
- Wipe
- Wipe Random
The documentation for WLED made compiling the project a breeze. Following it, I installed PlatformIO as a VSCode plugin, selected the target device and I was good to go.
Afterwards, I translated the index.htm file to german and I was done.
What’s next
I will talk to the mother of the kid and see which effects are okay to use. These can be added via an OTA update. (Thanks WLED, love it)
Afterwards, I will probably make another one for myself, since it looks very cool. I’m a big fan of the design.