# Oliver's LED Nameplate

## Overview
A USB-C powered desk nameplate PCB that spells "OLIVER" in 57 white 0603 LEDs.
Plug in any phone charger and the name lights up.

## Design decisions

- **Font:** 3x5 pixel dot-matrix, 6 mm pitch between LED centers, 8 mm gap between letters
- **LEDs:** 57 white 0603 LEDs (O=12, L=7, I=9, V=9, E=10, R=10)
- **Current limiting:** 57 individual 330 ohm 0603 resistors (one per LED), each sitting 3 mm below its LED
- **Power:** USB-C receptacle (TYPE-C-31-M-12 / JLCPCB C165948) on the east edge at pcbX = W/2 - 4 (the audited value from the adom-usbc guide)
- **CC pulldowns:** 2x 5.1k on CC1/CC2 so any USB-C host actually supplies 5 V default power
- **Bypass:** 100 nF 0603 cap on the VBUS rail
- **Board:** 178x58 mm absolute, 2-layer, roundEdges=false (required with large corner machine pins)
- **Machine contacts:** 4 corner contacts for Adom workcell compatibility

## Power budget
- White LED Vf ~3.2 V; (5 - 3.2) / 330 = ~5.5 mA per LED
- 57 LEDs x ~5.5 mA = ~310 mA, comfortably inside the USB-C 5 V default budget
- All LEDs in parallel: VBUS -> resistor -> LED anode, cathode -> GND

## Verified results
- 185 / 187 traces routed; KiCad reports **Unrouted 0**, 951 track segments, 55 vias, 61 nets, 264 pads
- USB-C geometry lint: body_fwd = 5.34 mm, mouth exits the board edge at x = 89.2 mm (cable seats correctly)

## Gotcha found while building this (worth keeping)

**USB-C pin labels must be UNIQUE.** The upstream wrapper labelled two different
pins `GND1` (pin1 + pin15) and two `VBUS1` (pin3 + pin13). tscircuit merges
same-labelled ports into one pcb_port, so their pads land on top of each other:

    pcb_pad_pad_clearance_error: Pads J1>GND1 and J1>GND2 too close (0mm, min 0.1mm)
    pcb_autorouting_error: Autorouting was skipped because 4 PCB placement errors were found

The board then ships completely unrouted. Fix: label them `GND_A1`, `GND_B12`,
`GND_A12`, `GND_B1`, `VBUS_A4`, `VBUS_B9`, `VBUS_A9`, `VBUS_B4` and tie them
together with traces. Also: tracing a USB-C pin by NUMBER (`J1.pin3`) instead of
by label makes `tsci build` hang indefinitely -- always trace by label.

The wrapper must also forward `schX`/`schY`/`schRotation` to the inner `<chip>`
or the receptacle silently piles at the schematic origin.

## Known limitation
`MP1..MP4` (the Molecule library's internally-emitted machine pins) still overlap
at the schematic origin. They can't be placed from board source -- the rest of the
layout is lifted clear of the origin to compensate.
