Comments (15)
mtfaptastic, I cannot find where to say thank you for the support and libraries. Thanks
This firmware works great on my ESP32 DoIT, I have managed to add in TimeAlarms and WiFiConnectLite, you may think thats no big deal well it is when the libraries do not play nice together or are a function short.
Only issue I have is WiFiConnectLite does not save settings to my ESP32.
I had to use RESET to use my panel as it has the newer FM6126 based LED matrix.
RESET by Robert J Davis II bobdavis321 on GITHUB
These are the only changes made to setting so I could use I2c
#define R1 25
#define G1 26
#define BL1 27
#define R2 5 // 21 SDA
#define G2 19 // 22 SDL
#define BL2 23
#define CH_A 12
#define CH_B 16
#define CH_C 17
#define CH_D 18
#define CH_E -1 // assign to pin 14 if using two panels
#define CLK 15
#define LAT 32
#define OE 33
[Animated Neko Alarm Clock]
[Neko was a small Macintosh animation/game written and drawn by Kenji Gotoh in 1989.]
from esp32-hub75-matrixpanel-i2s-dma.
from esp32-hub75-matrixpanel-i2s-dma.
this firmware is work fine.
https://github.com/NeoCat/ESP32-P3RGB64x32MatrixPanel
from esp32-hub75-matrixpanel-i2s-dma.
@Galaxy-Man thank you for your kind words. I also discovered the WiFiConnectLite issue last night as well, and have implemented a fix to this. Please download a new .zip of the library.
As for these new 'FM6126' - I do not have one of these so cannot test. What is it you needed to connect the RESET pin to? Other than that, just to confirm my understanding, you only needed to change the following pin mappings:
#define R2 5 // 21 SDA
#define G2 19 // 22 SDL
from esp32-hub75-matrixpanel-i2s-dma.
Thank you for the fix, I will try it and let you know how I get on. I was goign to hack the code and use EEPROM or Preferences to store the settings. I did not get that far as I got distracted making a Lemmings clock for a friend.
I changed all the pins, it started out I wanted to use a TTGO oled ESP32 with battery, Wemos ESP32 and DoIT ESP32 so tried to get the pins to work on all boards with having to change layout between them. I had more issues with the TTGO board so rather than waste time I opted for the DoIT board and the pin layout is what I end up with which worked for me and frees the SDA and SDL pins, I should of stuck with your layout.
Your libray for the matrix is impressive, is there anything else you are thinking of adding or improving?
The reset is Bob's code which you need ot run before initializing your library, it initialise the FM6126 chipset correctly.
It should be on my github page, if not I'll upload it.
I Will try 2x FM6126 boards together this week, I have them with me but forgot the cable from work, doh!
I have not had so much fun with these matrix boards since my Atari days lol
from esp32-hub75-matrixpanel-i2s-dma.
Tested new code works well, thanks.
from esp32-hub75-matrixpanel-i2s-dma.
Your libray for the matrix is impressive, is there anything else you are thinking of adding or improving?
Thanks again. I can thank the original guy who came up with a working DMA implementation for this. I just wanted to make something that was straightforward and that worked. I can't think of anything further that needs to be done. Perhaps share a link to Bob's code so I can understand it more.
I have not had so much fun with these matrix boards since my Atari days lol
To be honest, I haven't touched my panel since I wrote the original library out of my own curiosity. However, you've got me interested again. So last night found an old Gyro laying around. You can connect it to the two I2C pins (22 and 21) that this library keeps free, and have a lot of fun.
https://github.com/mrfaptastic/ESP32-Gyro-Clock
from esp32-hub75-matrixpanel-i2s-dma.
This is not good news, these panels are taking up loads of my time! I like it :-)
Bob's code to follow...
from esp32-hub75-matrixpanel-i2s-dma.
#include <Arduino.h>
#include <TomThumb.h> // this should be in the adafruit-gfx font library else try any small font
#include <ESP32-RGB64x32MatrixPanel-I2S-DMA.h>
RGB64x32MatrixPanel_I2S_DMA matrix;
////////////////////////////////////////////////////////////////////
// Reset Panel
// This needs to be near the top of the code
//
// Change these to whatever suits
// recommended settings and patches are by
//
// pinout for ESP38 38pin module
// http://arduinoinfo.mywikis.net/wiki/Esp32#KS0413_keyestudio_ESP32_Core_Board
//
// R1 | G1
// B1 | GND
// R2 | G2
// B2 | E
// A | B
// C | D
// CLK| LAT
// OE | GND
#define R1 25
#define G1 26
#define BL1 27
#define R2 5 // 21 SDA
#define G2 19 // 22 SDL
#define BL2 23
#define CH_A 12
#define CH_B 16
#define CH_C 17
#define CH_D 18
#define CH_E -1 // assign to pin 14 if using two panels
#define CLK 15
#define LAT 32
#define OE 33
void resetPanel()
{
int MaxLed = 64;
int C12[16] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1};
int C13[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0};
pinMode(R1, OUTPUT);
pinMode(G1, OUTPUT);
pinMode(BL1, OUTPUT);
pinMode(R2, OUTPUT);
pinMode(G2, OUTPUT);
pinMode(BL2, OUTPUT);
pinMode(CH_A, OUTPUT);
pinMode(CH_B, OUTPUT);
pinMode(CH_C, OUTPUT);
pinMode(CH_D, OUTPUT);
pinMode(CH_E, OUTPUT);
pinMode(CLK, OUTPUT);
pinMode(LAT, OUTPUT);
pinMode(OE, OUTPUT);
// Send Data to control register 11
digitalWrite(OE, HIGH); // Display reset
digitalWrite(LAT, LOW);
digitalWrite(CLK, LOW);
for (int l = 0; l < MaxLed; l++)
{
int y = l % 16;
digitalWrite(R1, LOW);
digitalWrite(G1, LOW);
digitalWrite(BL1, LOW);
digitalWrite(R2, LOW);
digitalWrite(G2, LOW);
digitalWrite(BL2, LOW);
if (C12[y] == 1)
{
digitalWrite(R1, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(BL1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(BL2, HIGH);
}
if (l > MaxLed - 12)
{
digitalWrite(LAT, HIGH);
}
else
{
digitalWrite(LAT, LOW);
}
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
}
digitalWrite(LAT, LOW);
digitalWrite(CLK, LOW);
// Send Data to control register 12
for (int l = 0; l < MaxLed; l++)
{
int y = l % 16;
digitalWrite(R1, LOW);
digitalWrite(G1, LOW);
digitalWrite(BL1, LOW);
digitalWrite(R2, LOW);
digitalWrite(G2, LOW);
digitalWrite(BL2, LOW);
if (C13[y] == 1)
{
digitalWrite(R1, HIGH);
digitalWrite(G1, HIGH);
digitalWrite(BL1, HIGH);
digitalWrite(R2, HIGH);
digitalWrite(G2, HIGH);
digitalWrite(BL2, HIGH);
}
if (l > MaxLed - 13)
{
digitalWrite(LAT, HIGH);
}
else
{
digitalWrite(LAT, LOW);
}
digitalWrite(CLK, HIGH);
digitalWrite(CLK, LOW);
}
digitalWrite(LAT, LOW);
digitalWrite(CLK, LOW);
}
// End of default setup for RGB Matrix 64x32 panel
///////////////////////////////////////////////////////////////
void setup(){
resetPanel(); // do this before matrix.begin
// If you experience ghosting, you will need to reduce the brightness level, not all RGB Matrix
// Panels are the same - some seem to display ghosting artefacts at lower brightness levels.
// In the setup() function do something like:
matrix.setPanelBrightness(10); // SETS THE BRIGHTNESS HERE. 60 OR LOWER IDEAL.
matrix.begin(R1, G1, BL1, R2, G2, BL2, CH_A, CH_B, CH_C, CH_D, CH_E, LAT, OE, CLK); // setup the LED matrix
// matrix.setFont(&TomThumb.h);
matrix.setTextColor(matrix.Color(96, 0, 96)); // r,g,b
matrix.setCursor(1, 15);
matrix.println("Hello World");
}
void loop(){
}
from esp32-hub75-matrixpanel-i2s-dma.
Let me know how you get on with this...or need a hand! I'm sure you can work it out :-)
from esp32-hub75-matrixpanel-i2s-dma.
I'm not going to code anything I can't test directly, so if I get a FM6126 based panel one day I might implement a routine. However, your code seems straight forward enough to re-purpose.
from esp32-hub75-matrixpanel-i2s-dma.
Understood, I was going to make it as a standalone file for neatness but never got round to it.
Got the Morphing Clock working with your library, works well and is neat.
If you need inspiration (well not much of a challenge) for a project then an alarm addin would be good.
Q. Does your DailTimer library work ok on ESP32, reason for question is when I build it reports TimeLib errors!
In file included from lib\DailyTimer\DailyTimer.h:21:0,
from lib\DailyTimer\DailyTimer.cpp:29:
lib\DailyTimer/TimeLib.h:157:16: error: expected initializer before 'SyncToPPS'
void IRAM_ATTR SyncToPPS();
^
from esp32-hub75-matrixpanel-i2s-dma.
Not sure what library you're using, but this is the TimeLib library.
https://github.com/PaulStoffregen/Time
from esp32-hub75-matrixpanel-i2s-dma.
the build was referencing a very old TimeLib, sorted now thanks.
from esp32-hub75-matrixpanel-i2s-dma.
@cxandy - Can you do me a favour and try the development branch and see if that improves anything?
from esp32-hub75-matrixpanel-i2s-dma.
Related Issues (20)
- Newbe: P4 Outdoor panel 80x40 nothing works HOT 21
- Font change HOT 6
- Artifacts when playing a GIF file on a uniform background HOT 5
- Aurora demo won't compile HOT 6
- Outdoor panel with 16207S driver low brightness HOT 10
- P8 32x16 HOT 21
- HUB75E Not showing proper output when interfaced with ESP32S3 HOT 6
- P8 40x20 1/5S HOT 9
- Information please ? HOT 1
- P2 128x64 MOEN panel with FM6363C LED Driver Chips HOT 9
- "GHOSTING" only when printing white text HOT 15
- Is there support for FM6124C HUB75E displays?
- Issue with 64x64 panel based on DP5125D and DP32020A HOT 12
- Display errors with ESP32 S3, but ESP32 works HOT 4
- HUB75 -> No Longer Works on ESP32 & S3/S2... Anymore!.. HOT 10
- WiFi AP doesn't work when using PSRAM -ESP32 S3 HOT 1
- 64x32 P4 Panel with ICs ICN2037BP and 74HC1385 "half blank" last row, ghost pixel with ESP32 D1 MINI HOT 3
- LED panel with ICN2038S have graphical distortions HOT 1
- Is there support for 128x64 Panel with ICND1065 chip HOT 5
- Ghosting and other problems with a FM6124 driver HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from esp32-hub75-matrixpanel-i2s-dma.