Bench Reference · Rev B · discrete-driver

House, Lighting Wiring Reference

4 switched zones · plain warm-white LEDs · ULN2803A low-side driver · cordless 5V.

Controller
Arduino Nano
Driver
ULN2803A · 8-ch
Power
USB bank · 5V
Outputs
D3 D5 D6 D9 · PWM
Sketch
townhouse_lights.ino
Series R
220Ω / LED
1

System schematic

Nano drives ULN inputs; ULN sinks each zone to ground
+5V GND USB bank 5V · always-on master sw Arduino Nano 5VGND D3 D5 D6 D9 button: D2 → GND (scene / wake) ULN2803A IN1IN2IN3IN4 O1O2O3O4 GND (pin 9) GF_INT2 LED UP_INT3 LED EXT5 LED FIRE1 LED each zone = 2-wire loop (+5V / return), see detail ▶

Signal (slate) = Nano PWM → ULN input. +5V red, GND black. The ULN pulls each zone's return to ground on command; the LED current never touches an Arduino pin.

2

Zone loop detail, how LEDs attach

Repeat per zone · add LEDs anywhere on the loop
+5V 220Ω 220Ω 220Ω ULN OUTx

Every fixture in a zone shares two wires: +5V and the zone's return to its ULN output. Wire an LED like this and drop it anywhere on the loop, no order, no polarity chain to keep straight beyond each LED's own + (anode) toward 5V.

  • Anode (+, longer leg) → +5V rail
  • Cathode (−, flat side) → 220Ω → zone return
  • One resistor per LED, keeps brightness even if one fails
BRIGHTNESS KNOB, start at 220Ω. Too dim? drop toward 150Ω. Too bright? the sketch's per-zone level also trims it in software. Dollhouse rooms read best low.
3

Output map

ZoneArduinoULN inULN out (pin)FixturesControl
GF_INTD3 · PWMIN1OUT1 · pin18living + kitchen ceilingsdim
UP_INTD5 · PWMIN2OUT2 · pin172× bedroom ceiling, atticdim
EXTD6 · PWMIN3OUT3 · pin16porch A/B, entry, deck, balconydim
FIRED9 · PWMIN4OUT4 · pin15hearthflicker

ULN2803A: GND = pin 9. COM (pin 10) unused for LEDs. Inputs IN1–8 = pins 1–8; outputs OUT1–8 = pins 18–11.

4

Fixture schedule

FixtureZoneInstall at
Porch light AEXTPic 8–9
Porch light BEXTPic 8–9
Front-door entryEXTPic 8–9
Side deck / wingEXTPic 8–9
Fireplace / hearthFIREPic 10
GF living ceilingGF_INTPic 11 ✦
GF kitchen ceilingGF_INTPic 11 ✦
Balcony wall lightEXTPic 12–13
2F bedroom ceilingUP_INTPic 14 ✦
2F bedroom ceilingUP_INTPic 14 ✦
Attic ceilingUP_INTPic 16–17
Spare, eave / yard, any
SCENES, button on D2 cycles; auto-fades dark after 20 min idle.
EveningAll OnNightOff
5

Build-order checklist

  • Pic 5, base closingMount Nano + ULN driver board + power bank + master switch in the crawlspace. Run a 2-wire loop (+5V + return) for each zone up into the house.
  • Pic 8–9, GF wallsWire the 4 EXT fixtures (porch A/B, entry, deck) onto the EXT loop through pre-drilled holes.
  • Pic 10, chimney baseDrop the FIRE hearth LED into the chimney.
  • Pic 11, GF ceiling✦ wire before glue Glue the 2 GF_INT LEDs to the panel underside, route to a corner, then set the floor.
  • Pic 12–13, 2F wallsWire the EXT balcony light.
  • Pic 14, 2F ceiling✦ wire before glue Glue the 2 UP_INT bedroom LEDs to the panel underside before it goes down.
  • Pic 16–17, roofFix the UP_INT attic LED to a rafter before closing the roof; dormers double as light wells.
  • FinishRoute the power-bank charge port to a hidden opening (rear wall / chimney base). Leave a base access hatch.
6

Bill of materials

Arduino + LEDs already on hand (struck through)
Arduino Nano×1
Warm-white LEDs×12
ULN2803A driver (+ DIP socket)×1
220Ω resistors (150Ω to brighten)×14
Momentary pushbutton×1
Slide switch (master, in 5V line)×1
USB power bank · always-on mode×1
USB-A pigtail / breakout×1
Hookup wire 26–30 AWG (R/B/sig)~10m
Perfboard for driver board×1
Hot glue + sticks,
Heat-shrink / Kapton tape,
1000µF cap across 5V (optional)×1
Drill bits 1–1.5mm,

Tools: soldering iron + solder, wire strippers, flush cutters, multimeter (verify each zone before gluing it in).