Ghibli Wara Wara Alarm Clock

Introduction:
This project was a present for an old friend’s birthday. Both of us are massive Ghibli fans, and I thought that it’d be cute to create a little lamp and alarm clock combo, featuring the Wara Wara from The Boy and the Heron. Everything shown is designed by me.
Building Process

I made all of the parts to be 3D printed using FUSION 360. For the Wara Wara themselves, I downloaded a reference image, and traced them out with Spline curves, before using offset to have solid lines for the edges. I spent around a week working out the kinks, and adding all the mounting screws required for the lamp and clock.

Next, I 3D printed all the parts, which are shown here. For the top plate, I used alcohol markers to give the coloring. In hindsight, I most likely should’ve just called up a friend and used their AMS printer for a much cleaner multicolor effect, but it is what it is. These parts were later assembled using m3 screws.
For the wiring, I cut out pieces of prototype boards, then hot glued LEDs to the bottom. I wired all the LED’s in parallel, and then added a current limiting resistor at the very end. In total, there were 40 LED’s used in the project, which are quite bright when turned on. The LEDs were actually too bright and didn’t diffuse enough, so I had to print a new shell that was 20mm taller(which was used in the final result.)
For the clock itself, I used a DS3231 RTC Module to keep track of time, and a SSD1309 128*64 OLED to display the images. I was kind of burned out from soldering at that point, so I just hot glued jumpers to where they were supposed to stay. I also added a barrel jack for power, and a switch which controlled a MOSFET for turning the clock light on and off.

Finally, I programmed the OLED display. It displays time, date, room temperature, as well as a special message depending on the holiday. I actually ran out of RAM on the Arduino nano at one point, as I was using too many switch statements to handle the displaying of text. In the end, I ended up flashing most of the required text to ROM, and used a function to retrieve them and return their pointers so that they could be displayed.
Final Result