Skip to content

Displays & LEDs

Side-by-side comparison

Module Type Resolution / count Bus Voltage Current Library
SSD1306 OLED 0.96" Mono OLED graphic 128×64 (or 128×32) I²C / SPI 3.3 V (5 V tolerant on module) ~20 mA active Adafruit_SSD1306 + Adafruit_GFX
16×2 LCD HD44780 Character LCD 16 cols × 2 rows 4-bit parallel or I²C backpack 5 V ~25 mA (backlight on) LiquidCrystal or LiquidCrystal_I2C
WS2812B / NeoPixel Addressable RGB LED 1 to 1000+ daisy-chained strict 800 kHz 1-wire 5 V up to 60 mA per LED @ full white FastLED or Adafruit_NeoPixel

Common questions

OLED vs LCD — which to pick?

OLED (SSD1306) for compact graphics, fonts, animations. No backlight (true black). Higher cost. LCD (1602) for plain text readouts. Backlight always on. Cheap, durable, easy to drive. Pick OLED for project dashboards, LCD for control panels.

How do I drive 100+ NeoPixels without crashing my MCU?

  • Power separately — 100 LEDs at full white = 6 A. Use a 5 V/10 A PSU.
  • Add a 1000 µF cap across V+/GND at the strip input.
  • 470 Ω resistor in series with DATA.
  • Inject 5 V every 1–2 m to avoid voltage drop.
  • Use FastLED instead of Adafruit_NeoPixel — more memory-efficient.

Why won't my OLED show anything?

Most common causes: (1) wrong I²C address — try 0x3D if 0x3C fails; (2) wrong resolution — 0.96" comes in 128×64 AND 128×32 variants; (3) forgot oled.display() after drawing. The library needs an explicit flush.

16×2 LCD I²C vs parallel — which to use?

Always the I²C backpack version for new projects — 2 wires (SDA/SCL) vs 6 wires (RS/E/D4–D7) and a contrast pot. Same library swap (LiquidCrystalLiquidCrystal_I2C).

WS2812B vs WS2812 vs WS2813 vs SK6812?

WS2812B = current standard (improved heat dissipation over WS2812). WS2813 adds redundant data line (continues if one LED fails). SK6812 = clone, often has RGBW variant. All use the same protocol; FastLED handles them with the same code.

Last updated: 2026-05-13 · Source on GitHub