From a6cd7eebb0b960c32228b18d93e9a7a4be1f5f26 Mon Sep 17 00:00:00 2001 From: user Date: Sun, 30 Mar 2025 16:11:48 +0200 Subject: Get Test patterns running on my 64x64 panel MBI5124GP https://blog.node5.net/Miscellaneous/64x64%20HUB%2075%20LED%20Matrix/ --- examples/PIO_TestPatterns/src/main.cpp | 80 +++++++++++++++------------------- 1 file changed, 35 insertions(+), 45 deletions(-) (limited to 'examples/PIO_TestPatterns/src/main.cpp') 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); } -- cgit v1.2.3