Skip to the content
PCBKitNew board
2 layers44.5 × 100 mmLightBoxPCB, the printed circuit board in 3D

A custom ATmega328P controller board for WS2812B addressable LED strips, designed in KiCad and built for a light box.

Size
44.5 × 100 mm
Copper layers
2
Thickness
1.6 mm
Parts
21
Nets
29
Pads
87
Tracks, vias
84, 0
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
21 Oct 2026
Updated
21 Oct 2026

Overview

LightBoxPCB is an open-source printed circuit board by audy910, from the audy910/LED-PCB-Controller repository on GitHub. It is a 2-layer board of 44.5 × 100 mm with 21 parts on 29 nets, routed with 84 tracks and 0 vias.

It is built around the ATMEGA328P-PU. Its parts include 9 capacitors, 4 connectors, 2 resistors and 1 IC. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

1

README

README.md

LED-PCB-Controller

A custom ATmega328P controller board for WS2812B addressable LED strips, designed in KiCad and built for a light box. Three buttons and a brightness knob drive three lighting modes, from adjustable warm/cool white to six animated "party" effects, all running on a standalone Arduino-compatible board with no dev board required.

Assembled board

Features

  • Standalone ATmega328P (DIP-28) running at 16 MHz, fully Arduino-compatible
  • Three lighting modes selectable with a dedicated MODE button
  • Analog brightness control via an on-board potentiometer, with smoothing to avoid flicker
  • Six animated effects in Party mode: rainbow wave, color chase, twinkle, fire, bouncing ball, and meteor rain
  • EMI-hardened button input: falling-edge detection, a confirm re-read to reject noise spikes from the LED data line, and release tracking to block repeat triggers
  • Two programming paths: 6-pin ICSP header and FTDI serial header with DTR auto-reset
  • Through-hole only, so it's easy to hand-solder
  • Compact 2-layer board, roughly 44.5 × 100 mm

Repository Contents

FileDescription
Lights_For_lightbox.inoArduino firmware (FastLED)
LightBoxPCB.kicad_schKiCad schematic
LightBoxPCB.kicad_pcbKiCad PCB layout (2-layer)
Gerbers.zipFabrication-ready Gerber and drill files

The KiCad files were saved with KiCad 10, so open them with KiCad 10 or newer.

Controls

The MODE button cycles through White → Party → Color. Buttons A and B change behavior depending on the active mode. The potentiometer sets brightness in every mode.

ModeButton AButton B
WHITEWarmerCooler
PARTYNext effect presetShift color
COLORToggle auto-cycleStep hue

Hardware

Pin Map

ATmega328P PinArduino PinFunction
PD6 (pin 12)D6LED data out (through 470 Ω series resistor)
PC0 (pin 23)A0Brightness potentiometer wiper
PD2 (pin 4)D2MODE button (to GND, internal pull-up)
PD3 (pin 5)D3Button A (to GND, internal pull-up)
PD4 (pin 6)D4Button B (to GND, internal pull-up)
PD0 / PD1D0 / D1FTDI serial RX / TX
PB3 / PB4 / PB5D11 / D12 / D13ICSP MOSI / MISO / SCK

Connectors

RefTypePinout
J3Barrel jack5 V power input
J41×3 headerLED strip: 5V, DATA, GND
J12×3 headerICSP (standard AVR pinout)
J21×6 headerFTDI: GND, CTS (n/c), VCC, TX, RX, DTR

Bill of Materials

RefValueFootprint
U1ATmega328P-PDIP-28
CLK116 MHz crystalHC49-4H
C4, C522 pFCeramic disc, 5 mm pitch
C1, C2, C3, C6, C7100 nFCeramic disc, 5 mm pitch
C810 µFRadial electrolytic, 5 mm dia.
C91000 µFRadial electrolytic, 10 mm dia.
R110 kΩAxial (reset pull-up)
R2470 ΩAxial (LED data series resistor)
RV1PotentiometerAlps RK09L, vertical
BTN_MODE1, BTN_A1, BTN_B1Tactile switch12 mm THT
J12×3 pin header2.54 mm
J21×6 pin header2.54 mm
J3Barrel jackWürth 6941xx301002
J41×3 pin header2.54 mm

Design Notes

  • Decoupling: 100 nF caps on VCC and AVCC, a 100 nF cap on AREF, a 10 µF bulk cap near the MCU, and a 1000 µF reservoir cap on the 5 V rail to absorb inrush current when the strip powers up or changes brightness quickly.
  • LED data line: the 470 Ω series resistor damps ringing and protects the first LED's data input.
  • Auto-reset: DTR on the FTDI header couples to RESET through a 100 nF cap, so uploads over serial work like a normal Arduino.

Power

The barrel jack feeds the 5 V rail directly. There's no on-board regulator, so use a regulated 5 V supply. Feeding it 9 V or 12 V will damage the MCU and the LEDs.

Each WS2812B can draw up to about 60 mA at full white. The default 11-LED configuration needs up to about 0.66 A, so a 5 V / 1 A supply is plenty. Scale the supply up if you increase NUM_LEDS.

Fabrication and Assembly

  1. Upload Gerbers.zip directly to a PCB fab (JLCPCB, PCBWay, OSH Park, etc.). The defaults are fine: 2 layers, 1.6 mm, HASL.
  2. Solder components from shortest to tallest: resistors, ceramic caps, crystal, IC socket (recommended for the DIP-28), headers, electrolytics, buttons, potentiometer, barrel jack.
  3. Watch the polarity on C8 and C9.
  4. Before inserting the ATmega328P, power the board and check for 5 V between VCC and GND on the socket.

Firmware

Dependencies

Configuration

Edit these defines at the top of Lights_For_lightbox.ino to match your setup:

cpp
#define NUM_LEDS       11     // number of LEDs on your strip
#define COLOR_ORDER    GRB    // change if colors look swapped
#define DEBOUNCE_MS    600    // raise if buttons still double-trigger
#define CONFIRM_MS     12     // noise-rejection re-check delay

Flashing

Set the board to Arduino Uno (ATmega328P, 16 MHz). Then use one of these methods.

Option A: ICSP (blank chip)

  1. Connect an ISP programmer (USBasp, or another Arduino running the ArduinoISP sketch) to J1.
  2. Run Tools → Burn Bootloader once to set the fuses for the 16 MHz external crystal.
  3. Upload with Sketch → Upload Using Programmer, or switch to Option B now that the bootloader is installed.

Option B: FTDI (bootloader installed)

  1. Connect a 5 V FTDI adapter to J2, matching GND to GND.
  2. Select the adapter's port and click Upload. DTR resets the chip automatically.

You can also flash the chip in an Arduino Uno and move it to the board.

Troubleshooting

SymptomLikely cause and fix
Buttons trigger on their ownEMI from the LED data line. Raise DEBOUNCE_MS (e.g. 800) and keep the LED cable away from the button wiring.
LEDs flicker or reset at high brightnessSupply can't keep up. Use a beefier 5 V supply and confirm C9 is installed.
Wrong colors (e.g. red shows as green)Change COLOR_ORDER to RGB or BRG.
Upload fails over FTDIBootloader not installed (use Option A first), TX/RX swapped, or the adapter is set to 3.3 V.
Board doesn't run after burning bootloaderCheck the crystal and its 22 pF load caps.

Author

Audrey — Computer Engineering, UC Riverside

Parts

21
QtyValueFootprintReferences
5100nFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC1, C2, C3, C6, C7
3SW_PushButton_Switch_THT:SW_PUSH-12mmBTN_A1, BTN_B1, BTN_MODE1
222pFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P5.00mmC4, C5
11000uFCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC9
110kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1
110uFCapacitor_THT:CP_Radial_D5.0mm_P2.50mmC8
116MHzCrystal:Crystal_HC49-4H_VerticalCLK1
1470Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR2
1ATmega328P-PPackage_DIP:DIP-28_W7.62mmU1
1Barrel_JackConnector_BarrelJack:BarrelJack_Wuerth_6941xx301002J3
1Conn_01x03Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1Conn_01x06Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ1
1R_PotentiometerPotentiometer_THT:Potentiometer_Alps_RK09L_Single_VerticalRV1

Questions

How big is the LightBoxPCB PCB?

It measures 44.5 × 100 mm and has 2 copper layers, 1.6 mm thick.

What parts does the LightBoxPCB use?

21 parts, built around the ATMEGA328P-PU. 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 LightBoxPCB KiCad files?

From the audy910/LED-PCB-Controller repository on GitHub, at the commit this page was made from: the board is LightBoxPCB.kicad_pcb and its schematic LightBoxPCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the LightBoxPCB design in my own project?

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

Similar boards

  • 2 layers68.8 × 53.6 mmZArduino, the printed circuit board in 3D

    ZArduino

    zmaker/arduino_cookbook

    gli sketch del nuovo progetto Arduino Cookbook e dei video di YouTube

    46 parts269
  • 2 layers76.3 × 122.8 mmDiscipad pcb, the printed circuit board in 3D

    Discipad pcb

    coseyfannitutti/discipad

    17-key numpad assembled with only through hole components, including usb type-c

    63 parts221GPL-3.0
  • 2 layers111.3 × 106.4 mmSuper Sixteen v1, the printed circuit board in 3D

    Super Sixteen v1

    matthewcieplak/super-sixteen

    Code and schematics for the Super Sixteen Eurorack sequencer

    141 parts171
  • 2 layers247.6 × 99.2 mmRomeo pcb, the printed circuit board in 3D

    Romeo pcb

    coseyfannitutti/romeo

    Staggered 40% keyboard pcb that can be assembled with only through hole components, including USB Type-C

    138 parts148GPL-3.0
  • 2 layers90 × 140 mmDrumkid, the printed circuit board in 3D

    Drumkid

    mattybrad/drumkid

    Version 4 was the first successful working design, with full code, schematics, Gerbers, etc available on GitHub.

    70 parts137
  • 2 layers238.1 × 375.5 mmFramework, the printed circuit board in 3D

    Framework

    stevennguyen/framework

    Ortholinear keyboard with a knob

    197 parts131
  • 2 layersLM80C R6, the printed circuit board in 3D

    LM80C R6

    leomil72/LM80C

    A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

    153 parts123GPL-3.0
  • 2 layers145.3 × 44.5 mmScout, the printed circuit board in 3D

    Scout

    oskitone/scout

    3D-printed, Arduino-compatible, 17-key mono synth. Squeeeee!

    48 parts114