aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authormrfaptastic <12006953+mrfaptastic@users.noreply.github.com>2021-07-27 17:35:47 +0100
committerGitHub <noreply@github.com>2021-07-27 17:35:47 +0100
commite6aa0cbd8076dd5a23d3d883ac269d5474f0efe5 (patch)
treef03ca7dc784c796eaeed2e231acab002e928b06d /examples
parente8f1c94ac68fa572290aed1f2670f79bd2997e58 (diff)
parent51bcbfc8c62cbbc0b039c589075e0acae62e953c (diff)
Merge pull request #156 from 2BECKHAM2/master
Modified to use the new pointer based approach of this library with mxconfig
Diffstat (limited to 'examples')
-rw-r--r--examples/1_SimpleTestShapes/1_SimpleTestShapes.ino158
1 files changed, 97 insertions, 61 deletions
diff --git a/examples/1_SimpleTestShapes/1_SimpleTestShapes.ino b/examples/1_SimpleTestShapes/1_SimpleTestShapes.ino
index 3e384b5..464fa1e 100644
--- a/examples/1_SimpleTestShapes/1_SimpleTestShapes.ino
+++ b/examples/1_SimpleTestShapes/1_SimpleTestShapes.ino
@@ -1,23 +1,24 @@
+
// Example sketch which shows how to display some patterns
// on a 64x32 LED matrix
//
#include <ESP32-HUB75-MatrixPanel-I2S-DMA.h>
-/*
- * Below is an example of the 'legacy' way of initialising the MatrixPanel_I2S_DMA class.
- * i.e. Matrix Width and Height will need to be confirmed as 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.
- *
- */
- MatrixPanel_I2S_DMA dma_display;
- // Or use an Alternative non-DMA library, i.e:
- //#include <P3RGB64x32MatrixPanel.h>
- //P3RGB64x32MatrixPanel display;
+#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;
+MatrixPanel_I2S_DMA *dma_display = nullptr;
+
+uint16_t myBLACK = dma_display->color565(0, 0, 0);
+uint16_t myWHITE = dma_display->color565(255, 255, 255);
+uint16_t myRED = dma_display->color565(255, 0, 0);
+uint16_t myGREEN = dma_display->color565(0, 255, 0);
+uint16_t myBLUE = dma_display->color565(0, 0, 255);
+
// Input a value 0 to 255 to get a color value.
@@ -25,13 +26,13 @@
// From: https://gist.github.com/davidegironi/3144efdc6d67e5df55438cc3cba613c8
uint16_t colorWheel(uint8_t pos) {
if(pos < 85) {
- return dma_display.color565(pos * 3, 255 - pos * 3, 0);
+ return dma_display->color565(pos * 3, 255 - pos * 3, 0);
} else if(pos < 170) {
pos -= 85;
- return dma_display.color565(255 - pos * 3, 0, pos * 3);
+ return dma_display->color565(255 - pos * 3, 0, pos * 3);
} else {
pos -= 170;
- return dma_display.color565(0, pos * 3, 255 - pos * 3);
+ return dma_display->color565(0, pos * 3, 255 - pos * 3);
}
}
@@ -39,86 +40,106 @@ void drawText(int colorWheelOffset)
{
// draw text with a rotating colour
- dma_display.setTextSize(1); // size 1 == 8 pixels high
- dma_display.setTextWrap(false); // Don't wrap at end of line - will do ourselves
+ dma_display->setTextSize(1); // size 1 == 8 pixels high
+ dma_display->setTextWrap(false); // Don't wrap at end of line - will do ourselves
- dma_display.setCursor(5, 0); // start at top left, with 8 pixel of spacing
+ dma_display->setCursor(5, 0); // start at top left, with 8 pixel of spacing
uint8_t w = 0;
const char *str = "ESP32 DMA";
for (w=0; w<strlen(str); w++) {
- dma_display.setTextColor(colorWheel((w*32)+colorWheelOffset));
- dma_display.print(str[w]);
+ dma_display->setTextColor(colorWheel((w*32)+colorWheelOffset));
+ dma_display->print(str[w]);
}
- dma_display.println();
- dma_display.print(" ");
+ dma_display->println();
+ dma_display->print(" ");
for (w=9; w<18; w++) {
- dma_display.setTextColor(colorWheel((w*32)+colorWheelOffset));
- dma_display.print("*");
+ dma_display->setTextColor(colorWheel((w*32)+colorWheelOffset));
+ dma_display->print("*");
}
- dma_display.println();
+ dma_display->println();
- dma_display.setTextColor(dma_display.color444(15,15,15));
- dma_display.println("LED MATRIX!");
+ dma_display->setTextColor(dma_display->color444(15,15,15));
+ dma_display->println("LED MATRIX!");
// print each letter with a fixed rainbow color
- dma_display.setTextColor(dma_display.color444(0,8,15));
- dma_display.print('3');
- dma_display.setTextColor(dma_display.color444(15,4,0));
- dma_display.print('2');
- dma_display.setTextColor(dma_display.color444(15,15,0));
- dma_display.print('x');
- dma_display.setTextColor(dma_display.color444(8,15,0));
- dma_display.print('6');
- dma_display.setTextColor(dma_display.color444(8,0,15));
- dma_display.print('4');
+ dma_display->setTextColor(dma_display->color444(0,8,15));
+ dma_display->print('3');
+ dma_display->setTextColor(dma_display->color444(15,4,0));
+ dma_display->print('2');
+ dma_display->setTextColor(dma_display->color444(15,15,0));
+ dma_display->print('x');
+ dma_display->setTextColor(dma_display->color444(8,15,0));
+ dma_display->print('6');
+ dma_display->setTextColor(dma_display->color444(8,0,15));
+ dma_display->print('4');
// Jump a half character
- dma_display.setCursor(34, 24);
- dma_display.setTextColor(dma_display.color444(0,15,15));
- dma_display.print("*");
- dma_display.setTextColor(dma_display.color444(15,0,0));
- dma_display.print('R');
- dma_display.setTextColor(dma_display.color444(0,15,0));
- dma_display.print('G');
- dma_display.setTextColor(dma_display.color444(0,0,15));
- dma_display.print("B");
- dma_display.setTextColor(dma_display.color444(15,0,8));
- dma_display.println("*");
+ dma_display->setCursor(34, 24);
+ dma_display->setTextColor(dma_display->color444(0,15,15));
+ dma_display->print("*");
+ dma_display->setTextColor(dma_display->color444(15,0,0));
+ dma_display->print('R');
+ dma_display->setTextColor(dma_display->color444(0,15,0));
+ dma_display->print('G');
+ dma_display->setTextColor(dma_display->color444(0,0,15));
+ dma_display->print("B");
+ dma_display->setTextColor(dma_display->color444(15,0,8));
+ dma_display->println("*");
}
void setup() {
+
+//
+
+ HUB75_I2S_CFG mxconfig(
+ PANEL_RES_X, // module width
+ PANEL_RES_Y, // module height
+ PANEL_CHAIN // Chain length
+ );
+
+ mxconfig.gpio.e = 18;
+ mxconfig.clkphase = false;
+ mxconfig.driver = HUB75_I2S_CFG::FM6126A;
+
+ // Display Setup
+ dma_display = new MatrixPanel_I2S_DMA(mxconfig);
+ dma_display->begin();
+ dma_display->setBrightness8(90); //0-255
+ dma_display->clearScreen();
+ dma_display->fillScreen(myWHITE);
- dma_display.begin(); // use default pins
+//
+ dma_display->begin(); // use default pins
// fix the screen with green
- dma_display.fillRect(0, 0, dma_display.width(), dma_display.height(), dma_display.color444(0, 15, 0));
+ dma_display->fillRect(0, 0, dma_display->width(), dma_display->height(), dma_display->color444(0, 15, 0));
delay(500);
// draw a box in yellow
- dma_display.drawRect(0, 0, dma_display.width(), dma_display.height(), dma_display.color444(15, 15, 0));
+ dma_display->drawRect(0, 0, dma_display->width(), dma_display->height(), dma_display->color444(15, 15, 0));
delay(500);
// draw an 'X' in red
- dma_display.drawLine(0, 0, dma_display.width()-1, dma_display.height()-1, dma_display.color444(15, 0, 0));
- dma_display.drawLine(dma_display.width()-1, 0, 0, dma_display.height()-1, dma_display.color444(15, 0, 0));
+ dma_display->drawLine(0, 0, dma_display->width()-1, dma_display->height()-1, dma_display->color444(15, 0, 0));
+ dma_display->drawLine(dma_display->width()-1, 0, 0, dma_display->height()-1, dma_display->color444(15, 0, 0));
delay(500);
// draw a blue circle
- dma_display.drawCircle(10, 10, 10, dma_display.color444(0, 0, 15));
+ dma_display->drawCircle(10, 10, 10, dma_display->color444(0, 0, 15));
delay(500);
// fill a violet circle
- dma_display.fillCircle(40, 21, 10, dma_display.color444(15, 0, 15));
+ dma_display->fillCircle(40, 21, 10, dma_display->color444(15, 0, 15));
delay(500);
// fill the screen with 'black'
- dma_display.fillScreen(dma_display.color444(0, 0, 0));
+ dma_display->fillScreen(dma_display->color444(0, 0, 0));
- drawText(0);
+ //drawText(0);
}
@@ -126,8 +147,23 @@ uint8_t wheelval = 0;
void loop() {
// animate by going through the colour wheel for the first two lines
- drawText(wheelval);
- wheelval +=1;
+ //drawText(wheelval);
+ //wheelval +=1;
- delay(20);
+ //delay(20);
+
+ drawText(0);
+ delay(2000);
+ dma_display->clearScreen();
+ dma_display->fillScreen(myBLACK);
+ delay(2000);
+ dma_display->fillScreen(myBLUE);
+ delay(2000);
+ dma_display->fillScreen(myRED);
+ delay(2000);
+ dma_display->fillScreen(myGREEN);
+ delay(2000);
+ dma_display->fillScreen(myWHITE);
+ dma_display->clearScreen();
+
}