Community project

ESP32 Scrolling Message Board

Photo of ESP32 Scrolling Message Board
Generated with AI

stephane.brachet

Published November 11, 2026

Build a scrolling LED message board that displays custom text across a 32x8 dot matrix display. This project uses an ESP32 microcontroller paired with MAX7219 LED driver modules to create eye-catching animated messages perfect for signs, notifications, or maker projects.

This guide provides a complete wiring diagram, parts list, and step-by-step assembly instructions. You'll learn how to connect the LED matrix to the ESP32 via SPI, flash the provided firmware using the MD_Parola library, and customize the scrolling messages to suit your needs. The firmware handles all the animation logic, so you can focus on building and personalizing your display.

Wiring diagram

Wiring diagram for ESP32 Scrolling Message Board
Loading diagram…

Gather all the parts

QtyComponent
1

MAX7219 8x32 LED Dot Matrix Module

Four cascaded 8x8 LED matrices driven by MAX7219 chips over SPI.

Assemble it in 3 steps

1. Wire the LED matrix to the ESP32

Connect the MAX7219 module VCC to 5V, GND to GND, DIN to GPIO23, CS to GPIO5, and CLK to GPIO18.

  • GPIO23 is the default VSPI MOSI pin, GPIO18 is VSPI CLK, and GPIO5 is VSPI SS, so this keeps your SPI bus on its default hardware pins.
  • If the module has a 4-in-1 design, only the input header needs wiring. The four 8x8 panels are already daisy-chained.
  • Power the matrix from the USB 5V rail, not the 3.3V pin. The MAX7219 needs 5V to drive the LEDs at full brightness.

2. Verify power and mount the panels

With power disconnected, check continuity of the shared ground and confirm the matrix 5 V input is not connected to ESP32 3.3 V. Mount the four-panel module so its input header remains accessible and no metal fixing can short the rear pads.

  • Start at low brightness to reduce supply current during testing.
  • Do not connect or move matrix wiring while powered.

3. Flash and test

Upload the sketch and open Serial Monitor at 115200 baud. You should see scrolling text across all four panels. Adjust display.setIntensity(4) from 0 to 15 to control brightness.

  • If text scrolls backwards or panels appear in the wrong order, try changing HARDWARE_TYPE to MD_MAX72XX::GENERIC_HW.
  • Lower intensity values save power and reduce eye strain at your desk.

Review all connections

1. Connections between "led-matrix-1" and "ESP32"

Functionled-matrix-1ESP32
powerVCC5V
groundGNDGND
spiDINGPIO 23
spiCSGPIO 5
spiCLKGPIO 18

Deploy the firmware

schematik_esp32.inoOpen in Schematik
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define DATA_PIN 23
#define CS_PIN 5
#define CLK_PIN 18

MD_Parola display = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

const char *messages[] = {
  "Hello from Schematik!",
  "Build something cool",
  "LED Matrix Demo",
  "Maker life is best life"
};
const int NUM_MESSAGES = sizeof(messages) / sizeof(messages[0]);
int currentMsg = 0;

void setup() {
  Serial.begin(115200);
  delay(100);

  display.begin();
  display.setIntensity(4);
  display.displayClear();

  display.displayScroll(messages[currentMsg], PA_LEFT, PA_SCROLL_LEFT, 40);
  Serial.println("LED Matrix Message Board ready");
}

void loop() {
  if (display.displayAnimate()) {
    currentMsg = (currentMsg + 1) % NUM_MESSAGES;
    display.displayScroll(messages[currentMsg], PA_LEFT, PA_SCROLL_LEFT, 40);
    Serial.printf("Now showing: %s\n", messages[currentMsg]);
  }
}

Remix this project

Make it yours in one click

Open a full copy of this project in your own Schematik workspace, diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.

Open in Schematik