aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-17 15:13:11 +0100
committermrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-08-17 15:13:11 +0100
commit3ac0fa6f83f7fa19d48c538f91444c74f3af9bd6 (patch)
tree7b60e2a0f6c83904ca8b0e28c9f3dd42c412adba /examples
parenta7483a8b7d2f1839266a04f6ec71324b4516b9bd (diff)
Remove last remaining legacy usage of the library
Diffstat (limited to 'examples')
-rw-r--r--examples/AuroraDemo/AuroraDemo.ino108
-rw-r--r--examples/AuroraDemo/Boid.h2
-rw-r--r--examples/AuroraDemo/Drawable.h2
-rw-r--r--examples/AuroraDemo/Effects.h17
-rw-r--r--examples/AuroraDemo/PatternCube.h4
-rw-r--r--examples/AuroraDemo/PatternInvaders.h16
-rw-r--r--examples/AuroraDemo/PatternPulse.h6
-rw-r--r--examples/AuroraDemo/PatternTest.h2
-rw-r--r--examples/BitmapIcons/BitmapIcons.ino58
-rw-r--r--examples/P6_32x16_1_4_ScanPanel/P6_32x16_1_4_ScanPanel.ino3
10 files changed, 128 insertions, 90 deletions
diff --git a/examples/AuroraDemo/AuroraDemo.ino b/examples/AuroraDemo/AuroraDemo.ino
index 7ed10fa..629f9be 100644
--- a/examples/AuroraDemo/AuroraDemo.ino
+++ b/examples/AuroraDemo/AuroraDemo.ino
@@ -1,38 +1,55 @@
-/* ------------------------- CUSTOM GPIO PIN MAPPING ------------------------- */
-#define R1_PIN 18
-#define G1_PIN 25
-#define B1_PIN 5
-#define R2_PIN 17
-#define G2_PIN 26
-#define B2_PIN 16
-#define A_PIN 14
-#define B_PIN 27
-#define C_PIN 12
-#define D_PIN 4
+#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
+
+/*--------------------- MATRIX GPIO CONFIG -------------------------*/
+#define R1_PIN 25
+#define G1_PIN 26
+#define B1_PIN 27
+#define R2_PIN 14
+#define G2_PIN 12
+#define B2_PIN 13
+#define A_PIN 23
+#define B_PIN 19 // Changed from library default
+#define C_PIN 5
+#define D_PIN 17
#define E_PIN -1
-#define LAT_PIN 13
+#define LAT_PIN 4
#define OE_PIN 15
-#define CLK_PIN 2
+#define CLK_PIN 16
-/* -------------------------- Display Config Initialisation -------------------- */
-// MATRIX_WIDTH and MATRIX_HEIGHT *must* be changed in ESP32-HUB75-MatrixPanel-I2S-DMA.h
-// If you are using Platform IO (you should), pass MATRIX_WIDTH and MATRIX_HEIGHT as a compile time option.
-// Refer to: https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA/issues/48#issuecomment-749402379
+/*--------------------- MATRIX PANEL CONFIG -------------------------*/
+#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 PANEL_CHAIN 1 // Total number of panels chained one to another
+
+/*
+//Another way of creating config structure
+//Custom pin mapping for all pins
+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(
+ 64, // width
+ 64, // height
+ 4, // chain length
+ _pins, // pin mapping
+ HUB75_I2S_CFG::FM6126A // driver chip
+);
+
+*/
+MatrixPanel_I2S_DMA *dma_display = nullptr;
+
+// Module configuration
+HUB75_I2S_CFG mxconfig(
+ PANEL_RES_X, // module width
+ PANEL_RES_Y, // module height
+ PANEL_CHAIN // Chain length
+);
+
+
+//mxconfig.gpio.e = -1; // Assign a pin if you have a 64x64 panel
+//mxconfig.clkphase = false; // Change this if you have issues with ghosting.
+//mxconfig.driver = HUB75_I2S_CFG::FM6126A; // Change this according to your pane.
-/* -------------------------- Class Initialisation -------------------------- */
-#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
-/*
- * Below is an is the 'legacy' way of initialising the MatrixPanel_I2S_DMA class.
- * i.e. MATRIX_WIDTH and MATRIX_HEIGHT are modified by compile-time directives.
- * By default the library assumes a single 64x32 pixel panel is connected.
- *
- * Refer to the example '2_PatternPlasma' on the new / correct way to setup this library
- * for different resolutions / panel chain lengths within the sketch 'setup()'.
- *
- */
-MatrixPanel_I2S_DMA matrix;
#include <FastLED.h>
@@ -54,33 +71,32 @@ unsigned long last_frame=0, ms_previous=0;
void setup()
{
- // Setup serial interface
+ /************** SERIAL **************/
Serial.begin(115200);
delay(250);
- matrix.begin(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 ); // setup the LED matrix
- /**
- * this demos runs pretty fine in fast-mode which gives much better fps on large matrixes (>128x64)
- * see comments in the lib header on what does that means
- */
- //dma_display.setFastMode(true);
-
- // SETS THE BRIGHTNESS HERE. MAX value is MATRIX_WIDTH, 2/3 OR LOWER IDEAL, default is about 50%
- // dma_display.setPanelBrightness(30);
- /* another way to change brightness is to use
- * dma_display.setPanelBrightness8(uint8_t brt); // were brt is within range 0-255
- * it will recalculate to consider matrix width automatically
- */
- //dma_display.setPanelBrightness8(180);
+
+ /************** DISPLAY **************/
+ Serial.println("...Starting Display");
+ dma_display = new MatrixPanel_I2S_DMA(mxconfig);
+ dma_display->begin();
+ dma_display->setBrightness8(90); //0-255
+ dma_display->fillScreenRGB888(128,0,0);
+ delay(1000);
+ dma_display->fillScreenRGB888(0,0,128);
+ delay(1000);
+ dma_display->clearScreen();
+ delay(1000);
Serial.println("**************** Starting Aurora Effects Demo ****************");
+
// setup the effects generator
effects.Setup();
delay(500);
Serial.println("Effects being loaded: ");
listPatterns();
-
+
patterns.moveRandom(1); // start from a random pattern
@@ -131,4 +147,4 @@ void loop()
void listPatterns() {
patterns.listPatterns();
-}
+} \ No newline at end of file
diff --git a/examples/AuroraDemo/Boid.h b/examples/AuroraDemo/Boid.h
index 43a876a..61a1758 100644
--- a/examples/AuroraDemo/Boid.h
+++ b/examples/AuroraDemo/Boid.h
@@ -318,7 +318,7 @@ class Boid {
//vertex(r, r*2);
//endShape();
//popMatrix();
- //matrix.drawBackgroundPixelRGB888(location.x, location.y, CRGB::Blue);
+ //dma_display->drawBackgroundPixelRGB888(location.x, location.y, CRGB::Blue);
}
};
diff --git a/examples/AuroraDemo/Drawable.h b/examples/AuroraDemo/Drawable.h
index 40356f4..56b3eb2 100644
--- a/examples/AuroraDemo/Drawable.h
+++ b/examples/AuroraDemo/Drawable.h
@@ -38,7 +38,7 @@ public:
// a single frame should be drawn as fast as possible, without any delay or blocking
// return how many millisecond delay is requested before the next call to drawFrame()
virtual unsigned int drawFrame() {
- matrix.fillScreen(0);
+ dma_display->fillScreen(0);
//backgroundLayer.fillScreen({ 0, 0, 0 });
return 0;
};
diff --git a/examples/AuroraDemo/Effects.h b/examples/AuroraDemo/Effects.h
index d1af415..c219758 100644
--- a/examples/AuroraDemo/Effects.h
+++ b/examples/AuroraDemo/Effects.h
@@ -127,7 +127,7 @@ public:
}
ClearFrame();
- matrix.clearScreen();
+ //dma_display->clearScreen();
}
~Effects(){
free(leds);
@@ -147,13 +147,13 @@ public:
void drawBackgroundFastLEDPixelCRGB(int16_t x, int16_t y, CRGB color)
{
leds[XY(x, y)] = color;
- //matrix.drawPixelRGB888(x, y, color.r, color.g, color.b);
+ //dma_display->drawPixelRGB888(x, y, color.r, color.g, color.b);
}
// write one pixel with the specified color from the current palette to coordinates
void Pixel(int x, int y, uint8_t colorIndex) {
leds[XY(x, y)] = ColorFromCurrentPalette(colorIndex);
- //matrix.drawPixelRGB888(x, y, temp.r, temp.g, temp.b); // now draw it?
+ //dma_display->drawPixelRGB888(x, y, temp.r, temp.g, temp.b); // now draw it?
}
void PrepareFrame() {
@@ -175,7 +175,7 @@ public:
for (int x=0; x<MATRIX_WIDTH; ++x){
//Serial.printf("Flushing x, y coord %d, %d\n", x, y);
uint16_t _pixel = XY16(x,y);
- matrix.drawPixelRGB888( x, y, leds[_pixel].r, leds[_pixel].g, leds[_pixel].b);
+ dma_display->drawPixelRGB888( x, y, leds[_pixel].r, leds[_pixel].g, leds[_pixel].b);
} // end loop to copy fast led to the dma matrix
}
}
@@ -734,13 +734,6 @@ public:
}
}
- // write one pixel with the specified color from the current palette to coordinates
- /*
- void Pixel(int x, int y, uint8_t colorIndex) {
- leds[XY(x, y)] = ColorFromCurrentPalette(colorIndex);
- matrix.drawBackgroundPixelRGB888(x,y, leds[XY(x, y)]); // now draw it?
- }
- */
CRGB ColorFromCurrentPalette(uint8_t index = 0, uint8_t brightness = 255, TBlendType blendType = LINEARBLEND) {
return ColorFromPalette(currentPalette, index, brightness, currentBlendType);
@@ -852,4 +845,4 @@ public:
};
-#endif
+#endif \ No newline at end of file
diff --git a/examples/AuroraDemo/PatternCube.h b/examples/AuroraDemo/PatternCube.h
index 7f9aefc..f2c60bc 100644
--- a/examples/AuroraDemo/PatternCube.h
+++ b/examples/AuroraDemo/PatternCube.h
@@ -188,7 +188,7 @@ class PatternCube : public Drawable {
{
e = edge + i;
if (!e->visible) {
- matrix.drawLine(screen[e->x].x, screen[e->x].y, screen[e->y].x, screen[e->y].y, color);
+ dma_display->drawLine(screen[e->x].x, screen[e->x].y, screen[e->y].x, screen[e->y].y, color);
}
}
@@ -200,7 +200,7 @@ class PatternCube : public Drawable {
e = edge + i;
if (e->visible)
{
- matrix.drawLine(screen[e->x].x, screen[e->x].y, screen[e->y].x, screen[e->y].y, color);
+ dma_display->drawLine(screen[e->x].x, screen[e->x].y, screen[e->y].x, screen[e->y].y, color);
}
}
diff --git a/examples/AuroraDemo/PatternInvaders.h b/examples/AuroraDemo/PatternInvaders.h
index cad004c..e2df82e 100644
--- a/examples/AuroraDemo/PatternInvaders.h
+++ b/examples/AuroraDemo/PatternInvaders.h
@@ -36,7 +36,7 @@ class PatternInvadersSmall : public Drawable {
}
void start() {
- matrix.fillScreen(0);
+ dma_display->fillScreen(0);
}
unsigned int drawFrame() {
@@ -80,7 +80,7 @@ class PatternInvadersMedium : public Drawable {
}
void start() {
- matrix.fillScreen(0);
+ dma_display->fillScreen(0);
}
unsigned int drawFrame() {
@@ -92,10 +92,10 @@ class PatternInvadersMedium : public Drawable {
if (random(0, 2) == 1) color = color1;
- matrix.fillRect(x + (i * 2), y + (j * 2), x + (i * 2 + 1), y + (j * 2 + 1), color);
+ dma_display->fillRect(x + (i * 2), y + (j * 2), x + (i * 2 + 1), y + (j * 2 + 1), color);
if (i < 2)
- matrix.fillRect(x + (8 - i * 2), y + (j * 2), x + (9 - i * 2), y + (j * 2 + 1), color);
+ dma_display->fillRect(x + (8 - i * 2), y + (j * 2), x + (9 - i * 2), y + (j * 2 + 1), color);
}
}
@@ -122,11 +122,11 @@ class PatternInvadersLarge : public Drawable {
}
void start() {
- matrix.fillScreen(0);
+ dma_display->fillScreen(0);
}
unsigned int drawFrame() {
- matrix.fillScreen(0);
+ dma_display->fillScreen(0);
CRGB color1 = effects.ColorFromCurrentPalette(random(0, 255));
@@ -138,10 +138,10 @@ class PatternInvadersLarge : public Drawable {
color = color1;
}
- matrix.fillRect(1 + x * 6, 1 + y * 6, 5 + x * 6, 5 + y * 6, color);
+ dma_display->fillRect(1 + x * 6, 1 + y * 6, 5 + x * 6, 5 + y * 6, color);
if (x < 2)
- matrix.fillRect(1 + (4 - x) * 6, 1 + y * 6, 5 + (4 - x) * 6, 5 + y * 6, color);
+ dma_display->fillRect(1 + (4 - x) * 6, 1 + y * 6, 5 + (4 - x) * 6, 5 + y * 6, color);
}
}
diff --git a/examples/AuroraDemo/PatternPulse.h b/examples/AuroraDemo/PatternPulse.h
index 8992a4d..4d4ba69 100644
--- a/examples/AuroraDemo/PatternPulse.h
+++ b/examples/AuroraDemo/PatternPulse.h
@@ -52,17 +52,17 @@ class PatternPulse : public Drawable {
}
if (step == 0) {
- matrix.drawCircle(centerX, centerY, step, effects.ColorFromCurrentPalette(hue));
+ dma_display->drawCircle(centerX, centerY, step, effects.ColorFromCurrentPalette(hue));
step++;
}
else {
if (step < maxSteps) {
// initial pulse
- matrix.drawCircle(centerX, centerY, step, effects.ColorFromCurrentPalette(hue, pow(fadeRate, step - 2) * 255));
+ dma_display->drawCircle(centerX, centerY, step, effects.ColorFromCurrentPalette(hue, pow(fadeRate, step - 2) * 255));
// secondary pulse
if (step > 3) {
- matrix.drawCircle(centerX, centerY, step - 3, effects.ColorFromCurrentPalette(hue, pow(fadeRate, step - 2) * 255));
+ dma_display->drawCircle(centerX, centerY, step - 3, effects.ColorFromCurrentPalette(hue, pow(fadeRate, step - 2) * 255));
}
step++;
}
diff --git a/examples/AuroraDemo/PatternTest.h b/examples/AuroraDemo/PatternTest.h
index 6f0544f..61e870a 100644
--- a/examples/AuroraDemo/PatternTest.h
+++ b/examples/AuroraDemo/PatternTest.h
@@ -12,7 +12,7 @@ class PatternTest : public Drawable {
unsigned int drawFrame() {
- matrix.fillScreen(matrix.color565(128, 0, 0));
+ dma_display->fillScreen(dma_display->color565(128, 0, 0));
return 1000;
}
};
diff --git a/examples/BitmapIcons/BitmapIcons.ino b/examples/BitmapIcons/BitmapIcons.ino
index 2c7ddf7..ab1b6e4 100644
--- a/examples/BitmapIcons/BitmapIcons.ino
+++ b/examples/BitmapIcons/BitmapIcons.ino
@@ -27,16 +27,39 @@
#define CLK_PIN 16
-/*
- * Below is an is the 'legacy' way of initialising the MatrixPanel_I2S_DMA class.
- * i.e. MATRIX_WIDTH and MATRIX_HEIGHT are modified by compile-time directives.
- * By default the library assumes a single 64x32 pixel panel is connected.
- *
- * Refer to the example '2_PatternPlasma' on the new / correct way to setup this library
- * for different resolutions / panel chain lengths within the sketch 'setup()'.
- *
- */
-MatrixPanel_I2S_DMA display; // RGB Panel
+/*--------------------- MATRIX LILBRARY CONFIG -------------------------*/
+#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 PANEL_CHAIN 1 // Total number of panels chained one to another
+
+MatrixPanel_I2S_DMA *dma_display = nullptr;
+
+// Module configuration
+HUB75_I2S_CFG mxconfig(
+ PANEL_RES_X, // module width
+ PANEL_RES_Y, // module height
+ PANEL_CHAIN // Chain length
+);
+
+/*
+//Another way of creating config structure
+//Custom pin mapping for all pins
+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(
+ 64, // width
+ 64, // height
+ 4, // chain length
+ _pins, // pin mapping
+ HUB75_I2S_CFG::FM6126A // driver chip
+);
+
+*/
+
+
+//mxconfig.gpio.e = -1; // Assign a pin if you have a 64x64 panel
+//mxconfig.clkphase = false; // Change this if you have issues with ghosting.
+//mxconfig.driver = HUB75_I2S_CFG::FM6126A; // Change this according to your pane.
+
/*
* Wifi Logo, generated with the following steps:
@@ -81,7 +104,7 @@ void drawXbm565(int x, int y, int width, int height, const char *xbm, uint16_t c
int targetX = (i * 8 + j) % width + x;
int targetY = (8 * i / (width)) + y;
if (bitRead(charColumn, j)) {
- display.drawPixel(targetX, targetY, color);
+ dma_display->drawPixel(targetX, targetY, color);
}
}
}
@@ -148,19 +171,22 @@ void setup() {
/************** DISPLAY **************/
Sprintln("...Starting Display");
- display.begin(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 );
+ dma_display = new MatrixPanel_I2S_DMA(mxconfig);
+ dma_display->begin();
+ dma_display->setBrightness8(90); //0-255
+ dma_display->clearScreen();
- display.fillScreen(display.color444(0, 1, 0));
+ dma_display->fillScreen(dma_display->color444(0, 1, 0));
// Fade a Red Wifi Logo In
for (int r=0; r < 255; r++ )
{
- drawXbm565(0,0,64,32, wifi_image1bit, display.color565(r,0,0));
+ drawXbm565(0,0,64,32, wifi_image1bit, dma_display->color565(r,0,0));
delay(10);
}
delay(2000);
- display.clearScreen();
+ dma_display->clearScreen();
}
@@ -173,6 +199,6 @@ void loop() {
current_icon = (current_icon +1 ) % num_icons;
delay(2000);
- display.clearScreen();
+ dma_display->clearScreen();
} \ No newline at end of file
diff --git a/examples/P6_32x16_1_4_ScanPanel/P6_32x16_1_4_ScanPanel.ino b/examples/P6_32x16_1_4_ScanPanel/P6_32x16_1_4_ScanPanel.ino
index 8efd79f..7e28f5f 100644
--- a/examples/P6_32x16_1_4_ScanPanel/P6_32x16_1_4_ScanPanel.ino
+++ b/examples/P6_32x16_1_4_ScanPanel/P6_32x16_1_4_ScanPanel.ino
@@ -19,6 +19,9 @@
* Refer to the 'getCoords' function within 'QuarterScanMatrixPanel.h'
*
**************************************************************************/
+
+ // PLEASE NOTE THIS EXAMPLE NO LONGER WORKS AS OF AUGUST 2021
+ // IT NEEDS TO BE UPDATED TO THE NEW WAY OF USING THE LIBRARY
// uncomment to use custom pins, then provide below
#define USE_CUSTOM_PINS