mrcodetastic / ESP32-HUB75-MatrixPanel-DMA

An Adafruit GFX Compatible Library for the ESP32, ESP32-S2, ESP32-S3 to drive HUB75 LED matrix panels using DMA for high refresh rates. Supports panel chaining.
MIT License
970 stars 211 forks source link

Virtual panel 1x4 #679

Open aidarishkulov opened 1 month ago

aidarishkulov commented 1 month ago

I launch by placing 4 panels on top of each other. Connection from bottom left to top. In the first lower module, the x coordinates are the same, and in the 3 upper ones they are shifted by one pixel. In the 2nd and 4th panels, x is shifted to the left, and in the 3rd panel to the right by one pixel. The у coordinates are the same. Controller HD-WF2. 64x32 panels, FM6124 driver. `#define R1_PIN 2

define R2_PIN 3

define G1_PIN 6

define G2_PIN 7

define B1_PIN 10

define B2_PIN 11

define A_PIN 39

define B_PIN 38

define C_PIN 37

define D_PIN 36

define E_PIN 21

define OE_PIN 35

define CLK_PIN 34

define LAT_PIN 33

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.

define NUM_ROWS 4 // Number of rows of chained INDIVIDUAL PANELS

define NUM_COLS 1 // Number of INDIVIDUAL PANELS per ROW

define PANEL_CHAIN NUM_ROWS*NUM_COLS // total number of panels chained one to another

include

HUB75_I2S_CFG::i2s_pins _pins_x1 = { R1_PIN, G1_PIN, B1_PIN, R2_PIN, G2_PIN, B2_PIN, A_PIN, B_PIN, C_PIN, D_PIN, E_PIN, LAT_PIN, OE_PIN, CLK_PIN
};

define VIRTUAL_MATRIX_CHAIN_TYPE CHAIN_BOTTOM_LEFT_UP

 MatrixPanel_I2S_DMA *dma_display = nullptr;
// placeholder for the virtual display object
 VirtualMatrixPanel  *virtualDisp = nullptr;

void setup() { HUB75_I2S_CFG mxconfig( PANEL_RES_X, // module width PANEL_RES_Y, // module height PANEL_CHAIN, // Chain length _pins_x1 // pin mapping for port X1 ); mxconfig.i2sspeed = HUB75_I2S_CFG::HZ_20M;
mxconfig.latch_blanking = 4; //mxconfig.clkphase = false; mxconfig.driver = HUB75_I2S_CFG::FM6124; mxconfig.double_buff = 0;
//mxconfig.min_refresh_rate = 30; dma_display = new MatrixPanel_I2S_DMA(mxconfig); dma_display->setBrightness8(255); //0-255 dma_display->begin(); dma_display->clearScreen(); virtualDisp = new VirtualMatrixPanel((*dma_display), NUM_ROWS, NUM_COLS, PANEL_RES_X, PANEL_RES_Y, VIRTUAL_MATRIX_CHAIN_TYPE); virtualDisp->fillScreen(virtualDisp->color444(0,0,0)); virtualDisp->setPhysicalPanelScanRate(NORMAL_TWO_SCAN); } void loop() { if((!(0))) { virtualDisp->drawPixel((5), (5), virtualDisp->color444((255), (0), (255))); } if((!(0))) { virtualDisp->drawLine((1), (1), (1), (126), virtualDisp->color444((0), (255), (250))); } }`

Test

aidarishkulov commented 1 month ago

I had to look here, now it's normal. https://github.com/mrcodetastic/ESP32-HUB75-MatrixPanel-DMA/issues/134#issue-919612284

aidarishkulov commented 1 month ago

Another problem was found: the color shades of modules 1 and 3 are different from 2 and 4 in the example above. The panels are normal, when swapped, the shades remain the same. White turns bluish.