Skip to the content
PCBKitNew board
4 layers48 × 44 mmLEDHeart, the printed circuit board in 3D

An LED matrix built in the shape of a heart for a birthday present

Size
48 × 44 mm
Copper layers
4
Thickness
1.6 mm
Parts
114
Nets
43
Pads
273
Tracks, vias
2,316, 155
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
24 Apr 2026
Updated
9 May 2026

Overview

LEDHeart is an open-source printed circuit board by edf1101, from the edf1101/HeartLedMatrix repository on GitHub. It is a 4-layer board of 48 × 44 mm with 114 parts on 43 nets, routed with 2,316 tracks and 155 vias.

It is built around the TPS61222DCK, MMBT3904 and AO3401A, with the BAT-HLD-006-SMT among its other parts. Its parts include 82 diodes, 14 resistors, 9 capacitors, 4 ICs and 3 transistors. It belongs with the lEDs and displays boards and the RISC-V boards of this library.

Main components

4

README

README.md

Heart LED Matrix Animation System

A high-performance LED animation controller for a heart shaped LED matrix display, built for the CH32V003 microcontroller.

Hardware

Components

  • Microcontroller: CH32V003 RISC-V (32-bit, 48MHz)
  • LED Driver: IS31FL3731 (144-LED matrix controller with I2C)
  • LED Array: 79 custom heart-shaped RGB LEDs

Project Structure

text
src/
├── main.cpp              # Entry point, effect initialization, main loop
├── effects/
│   ├── Effect.h          # Abstract base class for all effects
│   ├── DotEffect.[h/cpp]  # Expanding circular dots
│   ├── PulseEffect.[h/cpp] # Shape-respecting expanding pulse
│   ├── WaveEffect.[h/cpp]  # Traveling sinusoidal waves
│   ├── RainEffect.[h/cpp]  # Falling raindrops with anti-aliasing
│   └── SpiralEffect.[h/cpp] # Rotating spiral patterns
├── matrix/
│   ├── IS31FL3731.[h/cpp] # LED driver with double-buffering
│   └── LedMapper.[h/cpp]  # Coordinate mapping system
└── utils/
    └── FastMaths.h       # Optimized math library (sin, cos, atan2, distance)

Animation Effects

1. Dot Effect

Multiple expanding circles that fade in and out at random positions. Uses Euclidean distance for perfect circular gradients.

Parameters: Number of dots, expansion radius, fade speed

2. Pulse Effect

A smooth expanding wave that respects the shape of the heart. Uses a precomputed signed distance field (SDF) for efficient edge detection.

Parameters: Pulse speed, wave thickness/sharpness

3. Wave Effect

Traveling sinusoidal waves across the LED array. Supports rotation for dynamic directional movement.

Parameters: Direction (degrees), wavelength, propagation speed, rotation speed

4. Rain Effect

Raindrops falling vertically with sub-pixel anti-aliasing for smooth motion and fading trails.

Parameters: Number of drops, fall speed, trail fade amount

5. Spiral Effect

Multi-armed spiral patterns rotating around the center point (5, 5). Combines angular and radial components.

Parameters: Rotation speed, spiral tightness, number of arms

Building and Uploading

Requirements

  • Arduino IDE or PlatformIO with CH32V003 board support
  • USB-to-Serial adapter (for programming)

Build Steps

bash
# Using PlatformIO:
pio run -t upload

Usage

The system automatically initializes and selects a random effect on startup. To change effects at runtime, modify currentEffect in main.cpp or implement a selection mechanism (e.g., button input).

Parts

114
QtyValueFootprintReferences
80LEDLED_SMD:LED_0603_1608MetricD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +64
520KResistor_SMD:R_0603_1608MetricR1, R2, R3, R4, R5
410KResistor_SMD:R_0402_1005MetricR8, R9, R10, R12
410uFCapacitor_SMD:C_0603_1608MetricC3, C6, C7, C9
2100nFCapacitor_SMD:C_0603_1608MetricC4, C8
210uFCapacitor_SMD:C_0805_2012MetricC2, C5
21N5819Diode_SMD:D_SOD-123D81, D82
2MMBT3904Package_TO_SOT_SMD:SOT-23Q1, Q3
1100KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14
1100nFCapacitor_SMD:C_0805_2012MetricC1
11KResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11
1220RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
14.7uHInductor_SMD:L_0805_2012MetricL1
14K7Resistor_SMD:R_0603_1608MetricR7
1AO3401APackage_TO_SOT_SMD:SOT-23Q2
1BAT-HLD-006-SMTMy_Connectors:BATHLD006SMTH1
1CH32V003JxMxPackage_SO:JEITA_SOIC-8_3.9x4.9mm_P1.27mmU3
1IS31FL3731-QFPackage_DFN_QFN:QFN-28-1EP_4x4mm_P0.4mm_EP2.3x2.3mmU1
1RSETResistor_SMD:R_0603_1608MetricR6
1TPS61222DCKPackage_TO_SOT_SMD:Texas_R-PDSO-G6U2
1~My_Connectors:VibsensorU4

Questions

How big is the LEDHeart PCB?

It measures 48 × 44 mm and has 4 copper layers, 1.6 mm thick.

What parts does the LEDHeart use?

114 parts, built around the TPS61222DCK, MMBT3904, AO3401A and BAT-HLD-006-SMT. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the LEDHeart KiCad files?

From the edf1101/HeartLedMatrix repository on GitHub, at the commit this page was made from: the board is hardware/LEDHeart/LEDHeart.kicad_pcb and its schematic hardware/LEDHeart/LEDHeart.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the LEDHeart design in my own project?

Its repository states no licence, so its author keeps all rights: ask edf1101 before reusing the design.

Similar boards

  • 2 layers73 × 32 mmSensor, the printed circuit board in 3D

    Sensor

    npeixoto64/ExitGuardian

    A full product project that watches windows with wireless sensors and has a gateway for the main door with wireless sensors. When you open the exit door to leave, it checks:

    36 parts1
  • 4 layers63.8 × 50.8 mmV2 reference, the printed circuit board in 3D

    V2 reference

    ameesme/little-camera

    A small black-and-white camera that posts to its own tiny blog, and everything around it.

    85 partsMIT
  • 4 layers24.4 × 35.6 mmAFE 03, the printed circuit board in 3D

    AFE 03

    NeDaMo93/Wearable_ECG_ADS1293_nrf52840

    Software for a Functional Demonstrator of a Medical Wearable for ECG and Activity Monitoring with Wireless Communication. With ADS1293, nrf52840, LSM6DSO. Includes an Android App and Python GUI.

    41 parts7
  • 2 layers44.8 × 36 mmPanel, the printed circuit board in 3D

    Panel

    jeffc/nrf52-watch-obsolete

    obsolete repository - see https://github.com/jeffc/nrf52-watch-firmware

    68 parts6
  • 4 layers140 × 88.4 mmBenboard, the printed circuit board in 3D

    Benboard

    ben-labs-ltd/benboard

    The BenBoard Split Ergo Mechanical Keyboard

    111 parts5GPL-3.0
  • 4 layers25.4 × 20 mm520nm i2c 16mA, the printed circuit board in 3D

    520nm i2c 16mA

    iorodeo/i_control_led

    Hardware files for IO Rodeo's current controlled led for the open colorimeter

    32 parts3CC-BY-4.0
  • 2 layers58.4 × 127 mmExternalPCB, the printed circuit board in 3D

    ExternalPCB

    Kllngii/Wetterstation

    Es sollen mit einem Mikrocontroller mehrere Sensordaten erfasst und aufbereitet werden

    31 parts2
  • 2 layersMeshtastic node, the printed circuit board in 3D

    Meshtastic node

    ben-labs-ltd/BL-N305X

    Meshtastic intended LoRa Node - Ben Labs Node 30.5dBm

    115 parts1MIT