Skip to the content
2 layers98.9 × 117.7 mmOrnament, the printed circuit board in 3D

Arduino ATTiny414 (814/1614/424/824/1624/3224) powered 30-LED programmable Christmas Ornament (or badge, etc.)

Size
98.9 × 117.7 mm
Copper layers
2
Thickness
1.6 mm
Parts
55
Nets
28
Pads
136
Tracks, vias
373, 110
Pours
1
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
31 Aug 2026
Updated
10 Sep 2026

Overview

Ornament is an open-source printed circuit board by madcow4242, from the madcow4242/Arduino-Ornament repository on GitHub. It is a 2-layer board of 98.9 × 117.7 mm with 55 parts on 28 nets, routed with 373 tracks and 110 vias.

It is built around the ATTINY414-SSN and TEMT6200FX01. Its parts include 30 diodes, 11 resistors, 4 capacitors, 2 ICs and 2 connectors. It belongs with the lEDs and displays boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

Arduino-powered Christmas Ornament (or badge, or anything else)

A custom LED Christmas ornament with advent calendar functionality, built using Arduino and KiCad. This project can easily be adapted to other formats such as a badge by changing the PCB layout.

Example Ornament

Key features:

  • 30 individually-addressable LEDs
  • PWM LED control, with support for up to 12 (or more) simultaneous LEDs
  • Fade-in / Fade-out support
  • Advent calendar mode included
  • User-configurable advent date and brightness settings
  • Light level measurement (optional)
  • Current measurement via a precision 1-ohm current sense resistor and precision amplified ADC circuit (intended to help optimize power usage prior to software finalization) (optional)
  • Optimized to fit within the 4k / 256 byte memory limitations of the ATTiny414, but is also compatible with larger variants such as the ATTiny 814/1614/824/1624/3224
  • Production software is configured to run at 8MHz to optimize power usage (instead of default 20MHz) - this can be changed if higher PWM frequency is desired, for example. (test software still runs at 20MHz)
  • >30 days run time on one set of 3x AAA batteries, using default Production software (5 hours/day on, with auto timer). Can be run on other 3-5VDC power sources like CR2032 for shorter durations (however, >3.5V is required for 2.8V LEDs or higher - so stick with ~2.2V LEDs or lower if using 3-3.3V power sources).

Project Structure

This project is organized into three main directories:

1. KiCad Files (KiCad_PCB_Ornament/)

Contains all KiCad design files for the PCB:

  • Schematic files (.kicad_sch)
  • PCB layout files (.kicad_pcb)
  • Component libraries (.lib, .dcm)
  • Footprint files (.kicad_mod)
  • Exported fabrication files (.gbr, .drl) (for the example design / messaging)

The PCB layout can be easily customized with your own text, or into a different physical format or size (like a badge) using KiCad - however if modifying the layout you'll have to re-route the board as well of course. I chose to put the control electronics on the front of the board (to be geeky), but they could easily be moved to the back to clean up the appearance.

NOTE: the board design includes optional current monitoring circuit and light sensing circuit. Neither of these are implemented in the production software, however they are fully functional and usable in the test software. Those features can be ported to production as needed, or removed or unpopulated on the PCB.

2. Production Software (Ornament_production_1/)

The main firmware for the ornament controller:

  • Main Arduino sketch (Ornament_production_1.ino)
  • Configuration and constants
  • LED control algorithms
  • Date setting and brightness adjustment routines
  • Software fits in under 4k of flash, and uses approx. 70 (of 256) bytes of dynamic storage

3. Test/Validation Software (Ornament_test_1/)

Code for testing and validating the PCB functionality:

  • Calibration routines
  • Basic functionality tests
  • Hardware verification code
  • Software uses less than the ATTiny414's 4k of flash and 256 bytes of dynamic storage
  • Includes ADC routines for current monitoring and light level measurement, if needed (not used in production code)

Production Features

  • Advent calendar display (December 1-25)
  • Custom LED patterns with twinkling effects, including PWM fade-in, fade-out
  • Date setting via button interface
  • Adjustable brightness levels (10% to 100%)
  • Sleep/wake cycle automation
  • Preview mode for manual activation during sleep, without affecting 24-hour auto-on timer

Hardware Requirements

  • Microchip ATtiny414 microcontroller (or others in that series)
  • Custom PCB with LED matrix
  • Power switch and button for user interface
  • Battery or power supply for operation
  • Optional serial monitor to view diagnostic output on the UART connections (test software only by default)

Getting Started

  1. Clone this repository
  2. Open the KiCad project to view or modify the PCB design
  3. Use the Arduino IDE to compile and upload the production firmware to the completed PCB
  4. Test with the validation software to verify hardware functionality
  5. Modify and install the production software as desired

License

This project is licensed under the MIT License - see the LICENSE file for details.

Notes

  • Custom LCG (Linear Congruential Generator) for random number generation to save flash space
  • Charlieplexing technique for LED control - it uses 6 GPIOs to allow individual addressability for up to 30 LEDs.
  • PWM LED control for up to 12 LEDs simultaneously, using 3x 32-step groups for each PWM cycle (4 LEDs per cycle)
  • (more LEDs can be controlled simultaneously via configuration, but will limit maximum LED brightness)

Parts

55
QtyValueFootprintReferences
30LEDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD1, D2, D10, D11, D12, D13, D14, D15, D16, D17, D18, D19, D20, D21, D22, D23 +14
6R82Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5, R6, R7, R8, R9
2Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1, J2
2R100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R12
1ATtiny414-SSPackage_SO:SOIC-14_3.9x8.7mm_P1.27mmU1
1Battery_CellCustomLibrary:BatteryHolder_Keystone_2479_3xAAA-NoHolesBT1
1C10nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1
1C1nFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC4
1C1uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5
1C220uF or 470uF low-ESR Polymer or TantalumCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC3
1INA190A3IDDFRPackage_TO_SOT_SMD:SOT-23-8_HandsolderingU2
1MountingHoleMountingHole:MountingHole_2.2mm_M2_DIN965_Pad_TopBottomH1
1QR Code (silkscreen)CustomLibrary:15mmQR_cazabon_ornamentH2
1R1Resistor_SMD:R_1206_3216MetricR10
1R10kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2
1R4.7kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
1SW_PushButton_Switch_SMD:SW_Push_1P1T_NO_E-Switch_TL3301NxxxxxGSW1
1SW_SPDTSwitch:CSS1210TBSW2
1TEMT6200FX01Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderQ1

Similar boards

  • 6 layers50 × 23 mmEsp32p4amoled3.19, the printed circuit board in 3D

    Esp32p4amoled3.19

    v-cu/dpf-load-monitor-wide

    ESP32-P4 diagnostic display for VAG diesels — live DPF and engine data over CAN (UDS) on a 3.19" ultra-wide AMOLED. Firmware, KiCad files, BOM and 3D enclosure.

    115 parts12
  • 2 layers40.3 × 43.1 mmIr ring, the printed circuit board in 3D

    Ir ring

    kkrzysztofik/Anyka_ak3918_hacking_journey

    Reverse engineering and hacking journey for Chinese IP cameras based on Anyka AK3918 SoC

    27 parts3GPL-3.0
  • 4 layers34.8 × 35.6 mmSw63 mk4 v2, the printed circuit board in 3D

    Sw63 mk4 v2

    xx0x/sw63

    Sci-fi inspired electronic watch. MK4 currently in the development (out in 2026).

    70 parts2MIT
  • 2 layers35 × 44 mmXx-39r elrs, the printed circuit board in 3D

    Xx-39r elrs

    aard-fi/xx-39r

    47 parts
  • 2 layers85 × 98 mmProject ornament, the printed circuit board in 3D

    Project ornament

    Boogami/PCB-ornament

    Christmas ornament - version 2024

    29 parts
  • 2 layersAtTiny lcd, the printed circuit board in 3D

    AtTiny lcd

    GerardZ/AFLII

    This is a replacement for the PCF8574 LCD-interface board, which is pin but not API compatible.

    8 parts
  • 2 layers100 × 34 mm7clock, the printed circuit board in 3D

    7clock

    Quard/7clock

    Simple budget clock using 7 segment display with cheap PIC microcontroller and RTC chip

    59 partsMIT
  • 2 layers541 × 25 mmSchematics, the printed circuit board in 3D

    Schematics

    ringedSquid/Cost_Effective_Soil_Moisture_Sensor_SSCS-2024

    SSCS 2024 Contest entry

    17 parts

Questions

How big is the Ornament PCB?

It measures 98.9 × 117.7 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ornament use?

55 parts, built around the ATTINY414-SSN and TEMT6200FX01. 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 Ornament KiCad files?

From the madcow4242/Arduino-Ornament repository on GitHub, at the commit this page was made from: the board is KiCad_PCB_Ornament/Ornament.kicad_pcb and its schematic KiCad_PCB_Ornament/Ornament.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ornament design in my own project?

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