← LOGBOOK LOG-357
WORKING · ELECTRONICS ·
SOLDERINGWS2812BNEOPIXELRGBLEDARDUINO

First Clean Solder — WS2812B RGB Ring on Arduino Uno

First successful solder joint: power and data wires onto a 16-LED WS2812B addressable RGB ring. All LEDs lit on the first power-up.

The Plan

After the solder bridge disaster on the MPU-6050 header pins, this was a deliberate second attempt — upgraded iron, better technique.

The target: a 16-LED WS2812B addressable RGB ring. Three connections needed — 5V, GND, and a single data line. No tight-spaced pads this time, just three through-holes with plenty of spacing. A low-risk board to practice on before going back to the gyro.

Goal: solder the wires cleanly, plug into the Uno, run the NeoPixel blink sketch, see all 16 LEDs light up.

What a WS2812B Is

The WS2812B is an addressable RGB LED with a built-in control IC inside each LED package. Each LED has four pins — 5V, GND, DIN (data in), DOUT (data out) — and they chain together in series.

The ring board routes this chain automatically. You wire 5V and GND to the ring’s power pads, a single data line from a microcontroller pin to DIN, and every LED on the ring is individually addressable from that one wire. No shift registers, no separate clock line — the protocol is a single-wire timed pulse sequence.

The Adafruit NeoPixel library handles the protocol. You call strip.setPixelColor(index, r, g, b) and strip.show(), and the library generates the correct bit timing automatically.

Soldering

Three pads on the ring: 5V, GND, DI (data in).

Cut three lengths of hookup wire — about 15cm each, different colors for sanity. Stripped ~4mm on each end, tinned the wire tips first with a small amount of solder before touching the pad.

Iron at 330°C. Pad-first: heat the pad for a second, touch solder to the pad (not the iron), let it flow. Then bring the tinned wire end in, reheat briefly until both surfaces wet together. Pull the iron. Let it cool without moving the wire.

All three joints: small, shiny, no bridges. The improvement from the first attempt was immediate — pre-tinning the wire ends made them stick in place instead of shifting when the iron came in.

The Sketch

Installed Adafruit NeoPixel via Arduino CLI (arduino-cli lib install "Adafruit NeoPixel"). Wired the ring: 5V → 5V pin on Uno, GND → GND, DI → digital pin 6.

#include <Adafruit_NeoPixel.h>

#define PIN        6
#define NUMPIXELS  16

Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  strip.begin();
  strip.setBrightness(40);
  strip.show();
}

void loop() {
  for (int i = 0; i < NUMPIXELS; i++) {
    strip.setPixelColor(i, strip.Color(0, 0, 150));
    strip.show();
    delay(80);
  }
  for (int i = 0; i < NUMPIXELS; i++) {
    strip.setPixelColor(i, 0);
    strip.show();
    delay(80);
  }
}

Blue LEDs chasing around the ring, one at a time, then clearing. Uploaded, and all 16 lit on the first power-up.

What Changed From the Last Attempt

Two things were different this time: better tools, and better technique.

The ₹300 kit from the first session was a budget iron with no temperature control — the tip ran hot and inconsistently, which made it hard to judge dwell time. Replaced it with a ₹1500 kit with a proper temperature-controlled iron. At 330°C with a stable tip, the solder wets predictably and you can actually develop muscle memory for how long to hold.

The second difference: pre-tinning the wire before touching the pad.

Last time, the wire was bare copper on the pad. The solder had to wet both the wire and the pad at the same time, which took longer, which meant more heat, which meant more solder fed in to compensate, which caused the bridge.

This time: wire already has solder on it. Touching the pad just needs to flow the two tinned surfaces together — fast, controlled, small joint.

Brightness set to 40 out of 255. At full brightness the ring pulls close to 960mA at full white (60mA per LED × 16), which is over the Uno’s USB current budget. At low brightness the whole ring runs comfortably under 100mA.