When Christmas, sending a Christmas card is a nice gesture for family, relatives, and friends. However, sending paper cards is a primitives form. (just joking). However, creating a custom card would be the next level of showing appreciation, but most importantly, a fun side project.
The Christmas card is designed using a LED matrix since it requires fewer pins and easier to create the schematic and layout. Additionally, no complex trace layout for wiring up each LED.
The MCU is an Atemga8 but is not restricted, it was chosen for its low cost and enough flash storage for the binary, as well as enough hardware features required.
The LED column are controlled with a WS2811 controller, which is actually an RGB controller IC. But each RGB is a dedicated column in the matrix. Finally, the rows are controlled by MOSFET drivers, controlled by the MCU.
Unfortunately, there is a hardware bug, causing one row to get dimmed. This will hopefully be resolved in version 2.
The firmware consists mostly of the logic for displaying a frame. That is it says how to make it look as if all LEDs are on by enabling each row at a time at a frequency higher than the human eye can perceive.
The majority of the binary size for the MCU are animation frames only, which had to be compressed by the number of bits to represent the light intensity.
The source code, as well board schematic and layout can be found on Github. The board layout and schematic are created with Autodesk Eagle.
Free/Open software developer, Linux user, Graphic C/C++ software developer, network & hardware enthusiast.