Skip to the content
PCBKitNew board
2 layers58 × 29.5 mmAttiny412 addressable, the printed circuit board in 3D

Attiny412 addressable

user-will/cursedPCB1

A quick start guide and related files for the Cursed PCB by Reil Industrial

Size
58 × 29.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
35
Nets
25
Pads
100
Tracks, vias
227, 48
Pours
2
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
14 Aug 2026
Updated
23 Aug 2026

Overview

Attiny412 addressable is an open-source printed circuit board by user-will, from the user-will/cursedPCB repository on GitHub. It is a 2-layer board of 58 × 29.5 mm with 35 parts on 25 nets, routed with 227 tracks and 48 vias.

It is built around the ATTINY412-SSN, CH340N and SK6812MINI-E. Its parts include 8 capacitors, 5 resistors, 5 diodes, 3 ICs and 3 connectors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

Cursed PCB

Cursed PCB is a programmable light board with an ATtiny412 microcontroller, four individually addressable RGB LEDs, onboard USB-C power, and an onboard CH340 SerialUPDI programmer. Plug it into a computer, install the ATtiny board support in Arduino IDE, and upload your own light patterns.

Top view of the Cursed PCB

Quick links: LED example · megaTinyCore documentation

Repository contents

The 3D exports include the PCB and modeled onboard components. J2 (the 1×6 GPIO header) and J3 (the 1×3 UPDI/power header) are intentionally unpopulated.

What you need

  • The Cursed PCB
  • A USB-C data cable (some charging-only cables cannot upload code)
  • Arduino IDE
  • The LED_example sketch in this repository

No separate LED library download is required. The tinyNeoPixel_Static library used by the example is included with megaTinyCore.

1. Install ATtiny412 support

The ATtiny412 is not included in Arduino IDE by default. Install the megaTinyCore board package:

  1. Open Arduino IDE.

  2. Open File → Preferences. On macOS, open Arduino IDE → Settings.

  3. Add this URL to Additional Boards Manager URLs:

    text
    http://drazzy.com/package_drazzy.com_index.json

    If another URL is already present, use the button beside the field and add this URL on a new line.

  4. Open Tools → Board → Boards Manager.

  5. Search for megaTinyCore.

  6. Install the newest version of megaTinyCore by Spence Konde.

The package includes the compiler, upload utility, and tinyNeoPixel libraries needed by this board.

2. Connect and configure the board

Connect the board directly to the computer with a USB-C data cable. The power LED should turn on and a new serial port should appear in Arduino IDE.

Select these settings under Tools:

SettingSelection
BoardmegaTinyCore → ATtiny412/402/212/202
Clock20 MHz internal
BOD Voltage Level4.2V (20 MHz or less)
millis()/micros() TimerEnabled (default timer)
ProgrammerSerialUPDI - 230400 baud

Choose the board entry without “w/Optiboot.” This board programs the ATtiny412 directly over UPDI and does not need a bootloader.

The onboard CH340 connection is dedicated to UPDI programming. It is not connected to the ATtiny412's normal UART pins, so Arduino Serial Monitor will not display Serial.print() output through this USB-C connection. PA6/TX and PA7/RX remain available on the six-pin header for an external serial adapter.

3. Open and upload the example

  1. Download or clone this repository.
  2. Open examples/LED_example/LED_example.ino in Arduino IDE.
  3. Compile with Sketch → Verify/Compile.
  4. Upload with Sketch → Upload Using Programmer. The regular Upload button is not used for this UPDI setup.

After the upload finishes, the four LEDs run through red, green, blue, white, a rainbow sweep, and a moving white chase.

Optional mode button

The example supports an optional normally-open pushbutton connected between exposed pins 0 (PA6) and 2 (PA1). No external resistor is needed for this example: the sketch drives PA6 low and enables PA1's internal pull-up. Each press advances to the next animation.

If no button is connected, the example still works. It automatically shows the four solid colors and then continues with the rainbow sweep.

Programming the lights

The four onboard LEDs are SK6812MINI-E addressable RGB LEDs connected as one chain. The first LED's data input is connected to PA3, which megaTinyCore calls Arduino pin 4.

The important setup from the example is:

cpp
#include <tinyNeoPixel_Static.h>

constexpr uint8_t LED_PIN = PIN_PA3;  // Arduino pin 4
constexpr uint8_t NUM_LEDS = 4;

byte pixelData[NUM_LEDS * 3];
tinyNeoPixel leds(NUM_LEDS, LED_PIN, NEO_GRB, pixelData);

void setup() {
  pinMode(LED_PIN, OUTPUT);
  leds.setBrightness(20);              // 0 to 255
  leds.setPixelColor(0, 255, 0, 0);   // first LED: red
  leds.show();
}

tinyNeoPixel_Static keeps the LED buffer in a fixed array, which is helpful on the ATtiny412's limited memory. Set colors with setPixelColor(), then call show() to send the updated buffer to the LEDs. The LEDs use NEO_GRB byte order.

Keep the brightness modest while experimenting. Four LEDs at full white use much more current and can be uncomfortably bright.

Pinout

With the component side facing up and the USB-C connector at the bottom, the six-pin header reads left to right:

Header labelArduino pinATtiny412 pinCommon functions
5V—VDDRegulated 5 V rail/output — not an external power input
GND—GNDGround
00PA6Digital I/O, DAC, UART TX
11PA7Digital I/O, UART RX
22PA1Digital I/O, I²C SDA
33PA2Digital I/O, I²C SCL

Arduino pin 4 / PA3 controls the onboard LEDs and is not on the six-pin header. PA0 / UPDI is reserved for programming.

The separate three-pin header is labeled UPDI, GND, VCC from top to bottom when the USB-C connector is at the bottom. For standalone external power, connect the supply's positive lead to VCC and its negative lead to GND. VCC feeds the onboard voltage regulator. UPDI is for advanced external programming; none of these pins are needed for normal USB-C programming.

Power and handling

  • For normal use, power and program the board through USB-C.
  • For standalone external power, connect the supply to VCC and GND on the side three-pin header. Do not power the board through the 5V pin.
  • VCC passes through an onboard L78L05 linear regulator. It produces a fixed 5 V rail and is rated for a maximum of 100 mA total output current. The board itself and all four LEDs share that limit.
  • The regulator needs approximately 7 V or more at VCC to maintain a regulated 5 V output. Keep VCC at or below the recommended 20 V maximum. The regulator IC's 30 V rating is an absolute maximum, not a recommended operating voltage. Higher input voltage creates more heat and reduces the practical current available.
  • Regulator heat is approximately (VCC input − 5 V) × current. Keep external supply voltage and LED brightness as low as practical. Four LEDs at high or full-white brightness can exceed the regulator's 100 mA rating.
  • Never connect an external supply to VCC while USB-C is connected. The two power sources are not isolated.
  • The exposed 5V header pin is the regulator's output/board rail. It may be used only as a limited 5 V output when the board is properly powered; never feed an external supply into it.
  • The board has exposed electronics. Prevent metal objects, conductive surfaces, and loose wires from shorting it.
  • Disconnect power before changing wiring. Observe polarity when using external power.
  • The LEDs can be very bright. Avoid staring directly at them at high brightness.

Troubleshooting

No serial port appears

  • Try a known USB-C data cable and another USB port.
  • Disconnect and reconnect the board while watching Tools → Port.
  • If the computer does not recognize the onboard CH340 USB serial device, install the CH340 driver for your operating system.

Upload fails or reports “UPDI initialization failed”

  • Confirm ATtiny412/402/212/202 (without Optiboot), BOD Voltage Level → 4.2V, and SerialUPDI - 230400 baud are selected.
  • Use Sketch → Upload Using Programmer, not the regular Upload command.
  • Close any serial monitor or other application using the board's port.
  • Try SerialUPDI - SLOW: 57600 baud under Tools → Programmer.
  • Unplug the board, reconnect it, reselect the port, and try again.

The sketch uploads but the LEDs stay dark

  • Confirm the sketch uses four pixels, NEO_GRB, and LED pin PIN_PA3 or Arduino pin 4.
  • Make sure the LED data pin is configured as OUTPUT when using tinyNeoPixel_Static.
  • Increase setBrightness(20) slightly while testing, but do not start at full brightness.

The sketch is too large

The ATtiny412 has 4 KB of program flash and 256 bytes of SRAM. Prefer tinyNeoPixel_Static, avoid large strings and unnecessary libraries, and keep the pixel buffer at 4 × 3 = 12 bytes.

Hardware summary

  • ATtiny412, 4 KB flash / 256 bytes SRAM
  • Four SK6812MINI-E addressable RGB LEDs
  • USB-C connector with onboard CH340 SerialUPDI programming
  • Side VCC external-power input through an L78L05 regulator: recommended 20 V maximum input, fixed 5 V output, 100 mA maximum total output
  • Four exposed GPIO pins, including I²C SDA/SCL
  • Approximately 58 mm × 29.5 mm
  • Four 2.2 mm mounting holes

For deeper ATtiny and library information, see the official megaTinyCore installation guide, megaTinyCore reference, and tinyNeoPixel reference.

Parts

35
QtyValueFootprintReferences
6LOGOLOGOG***, G***, G***, G***, G***, G***
4100nFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC3, C4, C5, C6
4MountingHoleMountingHole:MountingHole_2.2mm_M2H1, H2, H3, H4
4SK6812MINI-ELED_SMD:LED_SK6812MINI-E_3.2x2.8mm_P1.5mm_ReverseMountD6, D7, D8, D9
20.1uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC2, C8
25.1KResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR2, R3
10.1uF_0603_16VCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC1
110-47uFCapacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC7
1330RResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR4
14.7kResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR1
1ATtiny412Package_SO:SOIC-8_5.3x5.3mm_P1.27mmU1
1CH340NPackage_SO:JEITA_SOIC-8_3.9x4.9mm_P1.27mmU3
1GPIO PinsConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1L78L05_SOT89Package_TO_SOT_SMD:SOT-89-3_HandsolderingU2
1LEDLED_SMD:LED_0805_2012Metric_Pad1.15x1.40mm_HandSolderD5
1Power and Programming PinsConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1R_SmallResistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR5
1Solder JumperJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_Palconn_UTC16-GJ1

Questions

How big is the Attiny412 addressable PCB?

It measures 58 × 29.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Attiny412 addressable use?

35 parts, built around the ATTINY412-SSN, CH340N and SK6812MINI-E. 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 Attiny412 addressable KiCad files?

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

Can I use the Attiny412 addressable design in my own project?

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

Similar boards

  • 2 layers138.9 × 99.4 mmLED Keychain, the printed circuit board in 3D

    LED Keychain

    yansha2903-bot/LED-Keychain

    A small programmable LED keychain designed in KiCad and powered by an ATtiny412.

    15 parts
  • 2 layers100 × 100 mmBalloon, the printed circuit board in 3D

    Balloon

    misohiyoko/pq_main_2024_nanyo

    109 parts
  • 2 layers24 × 17 mmPower atiny v2, the printed circuit board in 3D

    Power atiny v2

    fijam/md-lpm

    This project consists of hardware files and software for a coin-battery operated laser tester that fits in a MiniDisk case.

    17 parts14
  • 2 layers100 × 22 mmPCBv2, the printed circuit board in 3D

    PCBv2

    adaand00/TINYLED

    Light-up sign with an attiny10 and three ws2812b RGB LEDs.

    20 parts5GPL-3.0
  • 2 layers26.1 × 31.4 mmQC Hack wPins, the printed circuit board in 3D

    QC Hack wPins

    Fab-Lab-Island/fli-bootcamp-2025

    About Fab Lab ísland bootcamp Húsavík 2025. Kíkið á síðuna fyrir neðan!

    15 parts2
  • 2 layersPcb actionneur ventouse, the printed circuit board in 3D

    Pcb actionneur ventouse

    Brasseur2robot/Les-brasseurs-d-idees

    Codebase de l'équipe légende des brasseurs d'idées concourant à la coupe de France de robotique. Vous pouvez y retrouver les différents fichiers utilisés pour la création et le fonctionnement de notre robot principal et…

    25 parts1GPL-3.0
  • 4 layers98 × 98 mmIGEM melty, the printed circuit board in 3D

    IGEM melty

    SreeniEadara/Hopkins-iGEM-2022-electrical

    Schematics and PCB designs for Hopkins iGEM 2022

    64 parts1
  • 2 layers24.2 × 24.1 mmVPC, the printed circuit board in 3D

    VPC

    Archfx/evie

    Camaro6 tweaks

    27 parts