From 5af3d83a10983f3739ba533cbc8da6d4f10f7c32 Mon Sep 17 00:00:00 2001 From: mrcodetastic <12006953+mrcodetastic@users.noreply.github.com> Date: Wed, 19 Feb 2025 01:34:59 +0000 Subject: VirtualMatrixPanel_T Initial release --- examples/VirtualMatrixPanel/README.md | 48 ++++++++++++++++++++--------------- 1 file changed, 27 insertions(+), 21 deletions(-) (limited to 'examples/VirtualMatrixPanel/README.md') diff --git a/examples/VirtualMatrixPanel/README.md b/examples/VirtualMatrixPanel/README.md index c5aca88..7012f3f 100644 --- a/examples/VirtualMatrixPanel/README.md +++ b/examples/VirtualMatrixPanel/README.md @@ -1,4 +1,9 @@ -## Chained Panels example - Chaining individual LED matrix panels to make a larger panel ## +# The 'VirtualMatrixPanel_T' class +The `VirtualMatrixPanel_T` is used to perform pixel re-mapping in order to support the following use-cases that can be used together: +1. To create a larger display based on a chain of individual physical panels connected electrically in a Serpentine or Zig-Zag manner. +2. To provide support for physical panels with non-standard (i.e. Not a 1/2 scan panel) pixel mapping approaches. This is often seen with 1/4 scan outdoor panels. + +## 1. Chaining individual LED matrix panels to make a larger virtual display ## This is the PatternPlasma Demo adopted for use with multiple LED Matrix Panel displays arranged in a non standard order (i.e. a grid) to make a bigger display. @@ -19,33 +24,34 @@ For example: You bought four (4) 64x32px panels, and wanted to use them to creat 1. [Refer to this document](https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-DMA/blob/master/doc/VirtualMatrixPanel.pdf) for an explanation and refer to this example on how to use. -2. In your Arduino sketch, configure these defines accordingly: -``` -#define PANEL_RES_X 64 // Number of pixels wide of each INDIVIDUAL panel module. -#define PANEL_RES_Y 32 // Number of pixels tall of each INDIVIDUAL panel module. +2. Read the `VirtualMatrixPanel.ino` code -#define NUM_ROWS 2 // Number of rows of chained INDIVIDUAL PANELS -#define NUM_COLS 2 // Number of INDIVIDUAL PANELS per ROW +## 2. Using this library with 1/4 Scan Panels (Four Scan) -#define PANEL_CHAIN NUM_ROWS*NUM_COLS // total number of panels chained one to another +This library does not natively support 'Four Scan' 64x32 1/8 or 32x16 1/4 scan panels such [as this](https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/154) by default. -#define VIRTUAL_MATRIX_CHAIN_TYPE - -``` -VIRTUAL_MATRIX_CHAIN_TYPE's: -![image](https://user-images.githubusercontent.com/12006953/224537356-e3c8e87b-0bc0-4185-8f5d-d2d3b328d176.png) +### Solution +Read the `VirtualMatrixPanel.ino` code. +The VirtualMatrixPanel_T class provides a way to additionally remap pixel for each individual panel by way of the `ScanTypeMapping` class. -3. In your Arduino sketch, use the 'VirtualMatrixPanel' class instance (virtualDisp) to draw to the display (i.e. drawPixel), instead of the underling MatrixPanel_I2S_DMA class instance (dma_display). +You can create your own custom per-panel pixel mapping class as well should you wish. +```cpp +// --- Example 3: Single non-standard 1/4 Scan (Four-Scan 1/8) --- -#### Thanks to #### -* Brian Lough for the Virtual to Real pixel co-ordinate code. +// Use an existing library user-contributed Scan Type pixel mapping +using MyScanTypeMapping = ScanTypeMapping; -YouTube: https://www.youtube.com/brianlough - -Tindie: https://www.tindie.com/stores/brianlough/ +// Create a pointer to the specific instantiation of the VirtualMatrixPanel_T class +VirtualMatrixPanel_T* virtualDisp = nullptr; +``` -Twitter: https://twitter.com/witnessmenow +The library has these user-contributed additions, but given the variety of panels on the market, your success with any of these may vary. -* Galaxy-Man for the donation of hardware for testing. +```cpp + FOUR_SCAN_32PX_HIGH, ///< Four-scan mode, 32-pixel high panels. + FOUR_SCAN_16PX_HIGH, ///< Four-scan mode, 16-pixel high panels. + FOUR_SCAN_64PX_HIGH, ///< Four-scan mode, 64-pixel high panels. + FOUR_SCAN_40PX_HIGH ///< Four-scan mode, 40-pixel high panels. +``` \ No newline at end of file -- cgit v1.3.1