diff options
| author | user <user@node5.net> | 2025-03-30 16:11:48 +0200 |
|---|---|---|
| committer | user <user@node5.net> | 2025-03-30 16:11:48 +0200 |
| commit | a6cd7eebb0b960c32228b18d93e9a7a4be1f5f26 (patch) | |
| tree | f8816a4fd4e117c690caccea488010fde11bd895 /examples/PIO_TestPatterns/src | |
| parent | 3d5dda371d579d1eb894e4bd38b06e63fc8aefc5 (diff) | |
Get Test patterns running on my 64x64 panel
MBI5124GP https://blog.node5.net/Miscellaneous/64x64%20HUB%2075%20LED%20Matrix/
Diffstat (limited to 'examples/PIO_TestPatterns/src')
| -rw-r--r-- | examples/PIO_TestPatterns/src/main.cpp | 80 |
1 files changed, 35 insertions, 45 deletions
diff --git a/examples/PIO_TestPatterns/src/main.cpp b/examples/PIO_TestPatterns/src/main.cpp index 4e0edb1..803435f 100644 --- a/examples/PIO_TestPatterns/src/main.cpp +++ b/examples/PIO_TestPatterns/src/main.cpp @@ -18,43 +18,32 @@ #endif #include "main.h" -// HUB75E pinout -// R1 | G1 -// B1 | GND -// R2 | G2 -// B2 | E -// A | B -// C | D -// CLK| LAT -// OE | GND - -/* Default library pin configuration for the reference - you can redefine only ones you need later on object creation -#define R1 25 -#define G1 26 -#define BL1 27 -#define R2 14 -#define G2 12 -#define BL2 13 -#define CH_A 23 -#define CH_B 19 -#define CH_C 5 -#define CH_D 17 -#define CH_E -1 // assign to any available pin if using panels with 1/32 scan -#define CLK 16 -#define LAT 4 -#define OE 15 -*/ +#define R1_PIN 1 +#define G1_PIN 40 +#define B1_PIN 2 +#define R2_PIN 4 +#define G2_PIN 36 +#define B2_PIN 6 +#define A_PIN 8 +#define B_PIN 21 +#define C_PIN 10 +#define D_PIN 17 +#define E_PIN 34 // required for 1/32 scan panels, like 64x64px. Any available pin would do, i.e. IO32 +#define LAT_PIN 15 +#define OE_PIN 14 +#define CLK_PIN 13 + +HUB75_I2S_CFG::i2s_pins _pins={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}; // Configure for your panel(s) as appropriate! -#define PIN_E 32 +#define E_PIN 34 #define PANEL_WIDTH 64 -#define PANEL_HEIGHT 64 // Panel height of 64 will required PIN_E to be defined. +#define PANEL_HEIGHT 64 // Panel height of 64 will required E_PIN to be defined. #ifdef VIRTUAL_PANE - #define PANELS_NUMBER 4 // Number of chained panels, if just a single panel, obviously set to 1 + #define PANELS_NUMBER 1 // Number of chained panels, if just a single panel, obviously set to 1 #else - #define PANELS_NUMBER 2 // Number of chained panels, if just a single panel, obviously set to 1 + #define PANELS_NUMBER 1 // Number of chained panels, if just a single panel, obviously set to 1 #endif #define PANE_WIDTH PANEL_WIDTH * PANELS_NUMBER @@ -62,12 +51,12 @@ #define NUM_LEDS PANE_WIDTH*PANE_HEIGHT #ifdef VIRTUAL_PANE - #define NUM_ROWS 2 // Number of rows of chained INDIVIDUAL PANELS - #define NUM_COLS 2 // Number of INDIVIDUAL PANELS per ROW + #define NUM_ROWS 1 // 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 // Change this to your needs, for details on VirtualPanel pls read the PDF! - #define SERPENT true - #define TOPDOWN false + #define SERPENT false + #define TOPDOWN true #endif @@ -102,19 +91,20 @@ void setup(){ // redefine pins if required //HUB75_I2S_CFG::i2s_pins _pins={R1, G1, BL1, R2, G2, BL2, CH_A, CH_B, CH_C, CH_D, CH_E, LAT, OE, CLK}; - HUB75_I2S_CFG mxconfig(PANEL_WIDTH, PANEL_HEIGHT, PANELS_NUMBER); + HUB75_I2S_CFG mxconfig(PANEL_WIDTH, PANEL_HEIGHT, PANELS_NUMBER, _pins); - mxconfig.gpio.e = PIN_E; - mxconfig.driver = HUB75_I2S_CFG::FM6126A; // for panels using FM6126A chips + mxconfig.gpio.e = E_PIN; + mxconfig.driver = HUB75_I2S_CFG::MBI5124; // for panels using FM6126A chips + mxconfig.i2sspeed = HUB75_I2S_CFG::HZ_8M; #ifndef VIRTUAL_PANE matrix = new MatrixPanel_I2S_DMA(mxconfig); matrix->begin(); - matrix->setBrightness8(255); + matrix->setBrightness8(128); #else chain = new MatrixPanel_I2S_DMA(mxconfig); chain->begin(); - chain->setBrightness8(255); + chain->setBrightness8(128); // create VirtualDisplay object based on our newly created dma_display object matrix = new VirtualMatrixPanel((*chain), NUM_ROWS, NUM_COLS, PANEL_WIDTH, PANEL_HEIGHT, CHAIN_TOP_LEFT_DOWN); #endif @@ -139,18 +129,18 @@ void loop(){ Serial.printf("%d ticks\n", ccount1); delay(PATTERN_DELAY); -/* + // Power supply tester // slowly fills matrix with white, stressing PSU for (int y=0; y!=PANE_HEIGHT; ++y){ for (int x=0; x!=PANE_WIDTH; ++x){ matrix->drawPixelRGB888(x, y, 255,255,255); //matrix->drawPixelRGB888(x, y-1, 255,0,0); // pls, be gentle :) - delay(10); + delay(2); } } - delay(5000); -*/ + delay(1000); + #ifndef VIRTUAL_PANE // simple solid colors @@ -387,7 +377,7 @@ void loop(){ Serial.println("\n====\n"); // take a rest for a while - delay(10000); + delay(1000); } |
