
LEDx16 board
tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

Personal project to revitalise an ancient fibre optic Christmas tree using a custom-built digital LED module
Fibre tree LED controller is an open-source printed circuit board by koczadly, from the koczadly/xmas-led-controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 77.5 × 67.1 mm with 53 parts on 49 nets, routed with 322 tracks and 0 vias.
It is built around the 74HC595. Its parts include 23 resistors, 12 diodes, 10 transistors, 2 capacitors and 2 ICs. It belongs with the PIC boards of this library.
This repository contains files from a personal project. The aim was to create a small microcontroller-driven LED module to replace a broken incandescent-based fibre optic Christmas tree. This is my first project involving PIC microcontrollers, and the second PCB I've designed; mistakes and questionable design techniques are to be expected.
Feel free to re-use or modify this project to fit your needs, or use as a reference for PCB design or PIC software development.
A range of final images can be found in the media folder.
| MPN | Type | Quantity | Unit cost (GBP) | Purpose |
|---|---|---|---|---|
| PIC12F683 (DIP) | Microcontroller | 1 | £0.45 | Controls visual animations and user input |
| 74HC595 (DIP) | 8-bit Shift Register | 1 | £0.05 | Controls outputs to outer blue LEDs from the MCU |
| N/A | 3mm Blue LED | 8 | £0.01 | Outer LED ring |
| N/A | 5mm Green LED | 3 | £0.01 | Inner LEDs (PWM-driven) |
| N/A | 5mm White LED | 1 | £0.01 | Inner strobing LED |
| 2N3904 (TO-92) | NPN Transistor | 10 | £0.01 | Drives each individual controllable LED group (8x Blue, 1x Green, 1x White) |
| N/A | SPST Momentary Switch | 1 | £0.30 | User input for changing displayed animation/colour |
| N/A | 1000μF (25V) Electrolytic Capacitor | 1 | £0.10 | Supply voltage smoothing |
| N/A | 100nF (50V) Ceramic Capacitor | 1 | £0.01 | Decoupling capacitor for MCU |
| N/A | 10k Resistor (1/4W) | 1 | £0.001 | Input switch pull-down resistor |
| N/A | 1k Resistor (1/4W) | 10 | £0.001 | Transistor base current limiters |
| N/A | 150R Resistor (1/4W) | 8 | £0.001 | Current limiter for blue LEDs |
| N/A | 120R Resistor (1/4W) | 3 | £0.001 | Current limiter for green LEDs |
| N/A | 62R Resistor (1/4W) | 1 | £0.001 | Current limiter for white LED |
Total component cost: £1.15
PCB panel cost (DIY): £0.35
Total cost: £1.50 (Not including etchant, solder or original tree product)
There were various constraints throughout this project, the most difficult one being that I could only produce a single-sided PCB, making overlaps impossible without using space for a 0Ω link. The size of the board was also restricted to 68mm x 92mm, otherwise the module wouldn't fit into the tree's current plastic base housing. Drill holes also had to be made and inserted at defined locations so the board could easily be screwed into the unit using pre-existing screw mounts from the previous incandescent arrangement.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R3, R7, R8, R9, R10, R11, R12, R13, R14 |
| 10 | 2N3904 | Package_TO_SOT_THT:TO-92L_Inline_Wide | Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10 |
| 8 | 150 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R15, R16, R17, R18, R19, R20, R21, R22 |
| 8 | LED-B | LED_THT:LED_D3.0mm_FlatTop | D5, D6, D7, D8, D9, D10, D11, D12 |
| 3 | 120 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R4, R5, R23 |
| 3 | LED-G | LED_THT:LED_D3.0mm_FlatTop | D2, D3, D4 |
| 2 | Conn_01x02 | Connector_Wire:SolderWirePad_1x02_P7.62mm_Drill2mm | J1, J2 |
| 1 | 1000uf | Capacitor_THT:CP_Radial_D10.0mm_P5.00mm | C2 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | 10nf | Capacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mm | C1 |
| 1 | 62 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2 |
| 1 | 74HC595 | Package_DIP:DIP-16_W7.62mm_Socket_LongPads | U2 |
| 1 | LED-W | LED_THT:LED_D3.0mm_FlatTop | D1 |
| 1 | PIC12F683-IP | Package_DIP:DIP-8_W7.62mm_Socket_LongPads | U1 |
The 51 most common of 53 parts.

tardate/LittleArduinoProjects
a collection of "Little Electronic & Arduino Projects", most involving electronics or an Arduino in one way or another!

ChrisChrisLoLo/beyblock20
The magnetic, modular, 20-key macropad that can join together to form an ortholinear board

slu4coder/Minimal-64x4-Home-Computer
My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

electroniceel/protoboard
Advanced protoboard layout with 1.27mm pitch for smd parts

TobleMiner/DC-UPS
A small DC UPS, designed to keep small appliances like consumer network equipment running during power outages



It measures 77.5 × 67.1 mm and has 2 copper layers, 1.6 mm thick.
53 parts, built around the 74HC595. 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.
From the koczadly/xmas-led-controller repository on GitHub, at the commit this page was made from: the board is hardware/Fibre tree LED controller.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).