NeoPixel Ring 12 with an ESP32 DevKit V1

A ring of 12 individually addressable 5050 RGB LEDs driven from a single 5V data wire.

NeoPixel Ring 12, A ring of 12 individually addressable 5050 RGB LEDs driven from a single 5V data wire.
In short

The NeoPixel Ring 12 runs from 5 V, so on the ESP32 DevKit V1 its VCC goes to VIN, and its DIN takes GPIO13 through a 74AHCT125 buffer and then a 470 Ohm resistor. Two things change from a 5 V Arduino: the 3.3 V data signal needs that buffer to reach the ring's logic threshold, and the ring's current comes from the same USB port as the ESP32's own.

Wiring the NeoPixel Ring 12 to the ESP32 DevKit V1

Pin by pin.

NeoPixel Ring 12ESP32 DevKit V1Note
VCCVIN
GNDGND
DINGPIO13 (D13)through a 74AHCT125 buffer powered from 5 V, then the 470 Ω resistor: the WS2812B reads a high from 0.7 × VDD (3.5 V), above a 3.3 V pin
  • VCC is on VIN, which gives about 5 V only while the board is powered from USB.

What to know on the ESP32 DevKit V1

  • The data line is the weak point on this board: the WS2812B wants a high of 0.7 x VDD, about 3.5 V on a 5 V ring, and GPIO13 gives 3.3 V. Many 12-pixel rings accept it on a short wire, but the 74AHCT125 the page's wiring puts between GPIO13 and the resistor, powered from 5 V, is what makes it reliable.WS2812B datasheet, p. 3
  • All 12 pixels at full white can draw about 720 mA, through VIN and so through the USB port that also feeds the ESP32, which draws about 240 mA while transmitting over Wi-Fi. The sketch's setBrightness(50) keeps the ring well under that worst case.Adafruit NeoPixel Uberguide, Powering NeoPixels; Espressif ESP32 Series Datasheet v5.3, p. 52
  • Adafruit NeoPixel drives the ESP32 through its RMT peripheral, so the strict 800 kHz timing comes from hardware and Wi-Fi interrupts do not corrupt the frame.Espressif ESP32 Series Datasheet v5.3, p. 38

NeoPixel Ring 12 code for the ESP32 DevKit V1

Compiled for esp32:esp32:esp32 on 2026-10-30.

Libraries: adafruit/Adafruit NeoPixel
// NeoPixel Ring 12 on ESP32 DevKit V1: wiring and a free simulation at https://www.tinkered.ai/components/neopixel-ring-12/esp32
#include <Adafruit_NeoPixel.h>

#define LED_PIN     13
#define LED_COUNT   12

Adafruit_NeoPixel ring(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  ring.begin();
  ring.setBrightness(50);  // 50 of 255: full white then draws about 12 mA a pixel (60 mA at full
                           // brightness). Raise it only with an external 5 V supply.
  ring.show();
}

void loop() {
  // Rainbow effect
  for (long firstPixel = 0; firstPixel < 65536; firstPixel += 256) {
    for (int i = 0; i < ring.numPixels(); i++) {
      int hue = firstPixel + (i * 65536L / ring.numPixels());
      ring.setPixelColor(i, ring.gamma32(ring.ColorHSV(hue)));
    }
    ring.show();
    delay(10);
  }
}

NeoPixel Ring 12 on the ESP32 DevKit V1: questions

Does the NeoPixel Ring 12 work with the ESP32's 3.3 V data?

Without a buffer, often but not reliably. The WS2812B's data high is 0.7 x VDD, about 3.5 V at 5 V (WS2812B datasheet, p. 3), above the ESP32's 3.3 V. That is why the page's wiring adds a 74AHCT125 buffer on DIN, which removes the doubt.

Can the ESP32's VIN pin power the NeoPixel Ring 12?

At a low brightness, yes, while the DevKit is on USB: VIN gives about 5 V only from USB. At full white the ring's 12 pixels can draw about 720 mA (Adafruit Uberguide), which a USB port and the board's traces should not carry; use a 5 V supply with a shared ground.

Which ESP32 pins can drive a NeoPixel ring?

Any output-capable GPIO, since the RMT output routes through the GPIO matrix (ESP32 datasheet, p. 38). Avoid the input-only GPIO34 to GPIO39 and the strapping pins GPIO0, 2, 5, 12 and 15; the page uses GPIO13.

Keep going

For AI assistants

This guide as plain Markdown. /components/neopixel-ring-12/esp32.md

What will you build with it?