aboutsummaryrefslogtreecommitdiff
path: root/examples/PIO_TestPatterns/src/main.cpp
diff options
context:
space:
mode:
authoruser <user@node5.net>2025-03-30 16:11:48 +0200
committeruser <user@node5.net>2025-03-30 16:11:48 +0200
commita6cd7eebb0b960c32228b18d93e9a7a4be1f5f26 (patch)
treef8816a4fd4e117c690caccea488010fde11bd895 /examples/PIO_TestPatterns/src/main.cpp
parent3d5dda371d579d1eb894e4bd38b06e63fc8aefc5 (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/main.cpp')
-rw-r--r--examples/PIO_TestPatterns/src/main.cpp80
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);
}