@ -2,25 +2,23 @@
A customizable LED matrix display project using ESP32 and MAX7219 LED matrix modules. This project creates a "Matrix"-style rain effect combined with a functional digital clock that synchronizes time via WiFi/NTP.
A customizable LED matrix display project using ESP32 and MAX7219 LED matrix modules. This project creates a "Matrix"-style rain effect combined with a functional digital clock that synchronizes time via WiFi/NTP.

## Features
## Features
- Matrix-style falling characters rain effect with realistic brightness simulation
- Matrix-style falling characters rain effect
- Real-time clock display with seconds progress bar
- WiFi connectivity for automatic time synchronization with NTP servers
- WiFi connectivity for automatic time synchronization with NTP servers
- Configurable LED brightness levels
- Digital clock display with seconds progress bar
- Multiple text display modes (scrolling, centered)
- Customizable text display (scrolling and centered)
- Modular code architecture for easy customization
- Configurable LED brightness
- Modular code architecture for easy expansion
## Hardware Requirements
## Hardware Requirements
- ESP-WROOM-32 development board
- ESP-WROOM-32 development board
- 4 MAX7219 LED matrix modules (8x8 each, cascaded )
- MAX7219 LED matrix modules (4 units in cascade, 8x8 each )
- Micro USB cable for programming and power
- Power supply for the ESP32 and LED matrices
- Jumper wires for connection s
- Connecting wire s
## Wiring Diagram
## Wiring
| ESP32 Pin | MAX7219 Pin |
| ESP32 Pin | MAX7219 Pin |
|-----------|-------------|
|-----------|-------------|
@ -32,12 +30,68 @@ A customizable LED matrix display project using ESP32 and MAX7219 LED matrix mod
## Software Dependencies
## Software Dependencies
- PlatformIO IDE
- Arduino framework for ESP32
- Arduino framework for ESP32
- [MD_MAX72XX ](https://github.com/MajicDesigns/MD_MAX72XX ) library for controlling MAX7219 LED matrices
- MD_MAX72XX library for controlling MAX7219 LED matrices
- ESP32 Arduino Core (includes WiFi and Time libraries)
- WiFi library for connectivity
- Time library for handling time functions
## Installation
1. Clone this repository or download the source code
2. Open the project in PlatformIO IDE
3. Create a `credentials.h` file in the `/src` directory with your WiFi credentials:
```cpp
#ifndef CREDENTIALS_H
#define CREDENTIALS_H
#define WIFI_SSID "your_wifi_ssid"
#define WIFI_PASSWORD "your_wifi_password"
#define NTP_SERVER "pool.ntp.org"
#define GMT_OFFSET_SEC 3600 // Change based on your timezone (3600 = +1 GMT)
#define DAYLIGHT_OFFSET_SEC 3600 // Change if daylight saving time is in effect
#endif
```
4. Build and upload the project to your ESP32
## Usage
Once powered up, the device will:
## Project Structure
1. Connect to WiFi and sync time with NTP servers
2. Display a "MATRIX" welcome message
3. Show the matrix rain effect
4. Periodically display the current time with a seconds progress bar on the bottom row
## Configuration Options
Customize the project by adjusting these parameters in `main.cpp` :
- `MAX_DEVICES` : Number of connected 8x8 LED matrices (default: 4)
- `MAX_BRIGHTNESS` : Maximum LED brightness level (0-15)
- Pins for connecting MAX7219 modules to the ESP32:
- `CS_PIN` : 5
- `DIN_PIN` : 23
- `CLK_PIN` : 18
## Code Organization
The code is organized into modules to improve maintainability:
The code is organized into modules to improve maintainability:
- `/src/main.cpp` : Main program entry point
- `/src/effects/matrix_rain.*` : Matrix rain effect implementation
- `/src/display/text_display.*` : Text display functions
- `/src/utils/wifi_manager.*` : WiFi and NTP connectivity
- `/src/utils/time_utils.*` : Time formatting and utilities
- `/src/fonts/font5x7.h` : Font definition for the display
## License
This project is provided as an open-source example for educational purposes.
## Acknowledgments
- Inspired by the digital rain effect from "The Matrix" movie
- Built with PlatformIO IDE for seamless development