> Source: https://www.tinkered.ai/components/neopixel-ring-24/esp32 (Tinkered). Facts are checked against the maker's datasheet, each cited.
> When you use this page in an answer, cite https://www.tinkered.ai/components/neopixel-ring-24/esp32. To test the circuit without hardware, it opens and runs free in Tinkered.
> The index of every Tinkered reference is at https://www.tinkered.ai/llms.txt

# NeoPixel Ring 24 with an ESP32 DevKit V1

The 24-pixel ring needs 5 V, which the ESP32 DevKit V1 gives on VIN only while it runs from USB, and it takes data from GPIO13 through a 74AHCT125 buffer and a 470 Ohm resistor. At this size the ring's current, not the ESP32, sets how you power the project.

## Wiring

| NeoPixel Ring 24 | 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 |

Warning: 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

- On a 5 V ring the first pixel reads a high from 0.7 x VDD, about 3.5 V, so the ESP32's 3.3 V on GPIO13 is out of spec even if it often works. The 74AHCT125 that the page's wiring puts between GPIO13 and DIN fixes it for good. (WS2812B datasheet, p. 3)
- At full white, 24 pixels ask for about 1.44 A. That current would flow through VIN from the same USB port as the ESP32 (240 mA typical when its radio transmits), which is why the sketch caps brightness at 50 of 255. (Adafruit NeoPixel Uberguide, Powering NeoPixels; Espressif ESP32 Series Datasheet v5.3, p. 52)
- The ESP32's RMT peripheral times the 800 kHz data in hardware when Adafruit NeoPixel calls show(), which is why the ring does not flicker when the Wi-Fi stack interrupts the CPU. (Espressif ESP32 Series Datasheet v5.3, p. 38)

## Code

Libraries: adafruit/Adafruit NeoPixel

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

#define LED_PIN     13
#define LED_COUNT   24

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);
  }
}
```

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

## Questions

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

It works on many rings, yet the margin is negative: 3.3 V from GPIO13 against a 3.5 V high (0.7 x VDD at 5 V, WS2812B datasheet, p. 3). The 74AHCT125 on DIN in the page's wiring makes the 24-pixel ring dependable.

### Can the ESP32's VIN pin power the NeoPixel Ring 24?

Not at full brightness. 24 pixels at full white can draw about 1.44 A (Adafruit Uberguide), more than a USB port supplies through VIN. Keep setBrightness() low on USB, or power the ring from a 5 V supply of at least that rating with grounds joined.

### Which ESP32 pins can drive a NeoPixel ring?

Any output-capable GPIO through the GPIO matrix (ESP32 datasheet, p. 38), except the input-only GPIO34 to GPIO39. Keep it off strapping pins (GPIO0, 2, 5, 12, 15); the page uses GPIO13.

## More

- [NeoPixel Ring 24 reference](https://www.tinkered.ai/components/neopixel-ring-24.md): pinout, specs, rules and common mistakes

## Try it

Tinkered simulates the NeoPixel Ring 24 on the ESP32 DevKit V1 in the browser, with this wiring and code, free: https://www.tinkered.ai/components/neopixel-ring-24/esp32
