Skip to content

IO13 conflicts with SD card SPI — silently breaks NeoPixel/WS2812B bit-banging (no error, LEDs just don’t light up) #312

Description

@deepstahl77

When using an external WS2812B/NeoPixel strip (via Adafruit_NeoPixel) connected to IO13 on the “ESP32” header block, strip.show() runs without any error, but no LEDs light up — not even a minimal test sketch with no other logic. Voltage and data wiring were confirmed correct with a multimeter and by testing the same strip/code on a separate ESP32 board (worked fine there).
Switching only the data pin from IO13 to IO14 immediately fixed it — same wiring, same code otherwise. This suggests IO13 is internally tied to the microSD SPI interface (which display.begin() initializes), and that reserved status silently breaks unrelated bit-banging libraries on that pin without any error message.
Suggestion: It would help a lot to explicitly call out IO12–IO15 as SD-card-reserved (not just “free to use”) in the “ESP32” pin block documentation/pinout page, since they’re currently not visually distinguished from the fully free GPIO Expander 2 pins on the board silkscreen or in the free-GPIO docs page.

Secondary note (documentation gap): Also worth flagging — the readthedocs.io Arduino API reference (inkplate.readthedocs.io/en/latest/arduino.html) still documents drawImage(), pinModeIO(), digitalWriteIO() as top-level Inkplate:: methods. In library 11.x these have moved to display.image.draw() and display.expander2.pinMode()/.digitalWrite() (per the bundled Inkplate10_IO_Expanders.ino example). New users following the readthedocs page directly get compile errors (“has no member named…”). Might be worth a doc sync pass.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions