Free Shipping over ₹1199

ESP32 Matrix Display with Arduino IDE

Introduction

The MAX7219 8×8 LED Matrix module is a versatile component used to display text, numbers, and animations.
It simplifies the process of controlling individual LEDs in the 8×8 matrix using the MAX7219 chip.
This tutorial will guide you through connecting the matrix module to an ESP32 and programming it to display simple patterns, text, or scrolling messages.

Required Components

  • ESP32 Board
  • 8×8 LED Matrix Display Module
  • Jumper wires
  • Breadboard

Pinout

Circuit Diagram / Wiring

  • VCC (LED Module) → VIN/5V (ESP32)
  • GND (LED Module) → GND (ESP32)
  • DIN (LED Module) → Pin 32(ESP32)
  • CS (LED Module) → Pin 5(ESP32)
  • CLK (LED Module) → Pin 18(ESP32)

Code / Programming

  • Install Required Library (via Arduino Library Manager).
  • Go to the “Libraries” tab on the left-hand side of the screen.
  • Click on the “Library Manager” button (book icon) at the top of the Libraries tab.
  • In the Library Manager window, type “LedControl” in the search bar.
  • Locate the “LedControl” library click on the “Install” button next to it.
  • Wait for the library to be installed, and you’re ready to use the LedControl library in your projects.
/*
  Filename: esp32_led_matrix_display.ino
  Description: Displays animated patterns (face, heart, smiley) on 8x8 LED matrix using MAX7219 and ESP32
  Author: www.oceanlabz.in
  Modified: 1/4/2025
*/

#include <LedControl.h>

// ESP32 Pin Definitions (choose any available digital pins)
#define DATA_IN 23  // DIN
#define CLK     18  // CLK
#define CS      5   // LOAD/CS

// Create LedControl object: DIN, CLK, CS, number of devices
LedControl lc = LedControl(DATA_IN, CLK, CS, 1);

void setup() {
  lc.shutdown(0, false);   // Wake up display
  lc.setIntensity(0, 8);   // Set brightness (0–15)
  lc.clearDisplay(0);      // Clear display
}

void loop() {
  displayNormalFace();
  delay(1000);

  lc.clearDisplay(0);
  delay(500);

  displayHeart();
  delay(1000);

  lc.clearDisplay(0);
  delay(500);

  displaySmileFace();
  delay(1000);

  lc.clearDisplay(0);
  delay(500);
}

void displayNormalFace() {
  byte normalFace[8] = {
    B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10000001,
    B10111101,
    B01000010,
    B00111100
  };
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, normalFace[row]);
  }
}

void displayHeart() {
  byte heart[8] = {
    B00000000,
    B01100110,
    B11111111,
    B11111111,
    B11111111,
    B01111110,
    B00111100,
    B00011000
  };
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, heart[row]);
  }
}

void displaySmileFace() {
  byte smileFace[8] = {
    B00111100,
    B01000010,
    B10100101,
    B10000001,
    B10100101,
    B10011001,
    B01000010,
    B00111100
  };
  for (int row = 0; row < 8; row++) {
    lc.setRow(0, row, smileFace[row]);
  }
}

Explanation

  • The MAX7219 chip controls an 8×8 LED matrix using just 3 GPIO pins from the ESP32 (DIN, CLK, CS).
  • The ESP32 sends patterns or characters to the matrix through SPI-like serial communication using the LedControl library.
  • By defining custom byte arrays, you can display emojis, animations, or scrolling messages on the matrix.

Troubleshooting

  • If nothing displays, double-check the wiring order (DIN, CLK, CS) and ensure VCC is 5V.
  • Make sure the correct GPIO pins are used and match those in LedControl initialization.
  • If brightness is too low or LEDs flicker, increase brightness using lc.setIntensity(0, level) (0–15).

    Leave a Reply

    Your email address will not be published. Required fields are marked *

    Need Help?