The VirtualMatrixPanel_T
is used to perform pixel re-mapping in order to support the following use-cases that can be used together:
- To create a larger display based on a chain of individual physical panels connected electrically in a Serpentine or Zig-Zag manner.
- 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.
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.
When you link / chain multiple panels together, the ESP32-HUB75-MatrixPanel-I2S-DMA library treats as one wide horizontal panel. This would be a 'standard' (default) order.
Non-standard order is essentially the creation of a non-horizontal-only display that you can draw to in the same way you would any other display, with VirtualDisplay library looking after the pixel mapping to the physical chained panels.
For example: You bought four (4) 64x32px panels, and wanted to use them to create a 128x64pixel display. You would use the VirtualMatrixPanel class.
Refer to this document for an explanation and refer to this example on how to use.
-
Refer to this document for an explanation and refer to this example on how to use.
-
Read the
VirtualMatrixPanel.ino
code
This library does not natively support 'Four Scan' 64x32 1/8 or 32x16 1/4 scan panels such as this by default.
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.
You can create your own custom per-panel pixel mapping class as well should you wish.
// --- Example 3: Single non-standard 1/4 Scan (Four-Scan 1/8) ---
// Use an existing library user-contributed Scan Type pixel mapping
using MyScanTypeMapping = ScanTypeMapping<FOUR_SCAN_32PX_HIGH>;
// Create a pointer to the specific instantiation of the VirtualMatrixPanel_T class
VirtualMatrixPanel_T<CHAIN_NONE, MyScanTypeMapping>* virtualDisp = nullptr;
The library has these user-contributed additions, but given the variety of panels on the market, your success with any of these may vary.
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.