NeoPixel Ring 12 with an ESP32 DevKit V1
A ring of 12 individually addressable 5050 RGB LEDs driven from a single 5V data wire.
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 12 | ESP32 DevKit V1 | Note |
|---|---|---|
| VCC | VIN | |
| GND | GND | |
| DIN | GPIO13 (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.
// 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
This guide as plain Markdown. /components/neopixel-ring-12/esp32.md