Absolutely outstanding work, GR. I am an engineering project manager with 40 years of both hardware and software experience going back to when I was just 15 years old. Exceptionally thorough, well researched, and very well presented. If you are ever looking for a job, let me know.
Thanks! I try to be thorough because eventually when I need to revisit certain projects, I may have totally forgotten everything I learned the first time around so it’s good to document everything I can. A few LEDs got knocked off of that panel when I moved last year, I should fire it up again and see if it is still usable.
Really impressive. It's amazing to see what you've done to get it working. It's a good demonstration of what can be achieved with a strong will combined with shared knowledge. Thanks for sharing these moments with us.
It was one of those projects where I always felt I was almost there but not quite, so I kept going. Things like this also remind me why it’s good to buy so many things on eBay. Suddenly you need a different processor platform, reach into the drawer! At least that’s the excuse I’m going to use to keep shopping.
Thank Mr. Gadget ! Thanks for such a quick and thorough response about the led matrix graduation cap. I will dive in to your recommendations this weekend and see if I can pull it off. Thanks again !
This is great. I recently picked up a 64x64 and 64x32 and am now working on getting everything setup. I've got a teensy 4.1, so it sounds like i've got some work ahead of me.
hi sir ,i am Gina,i can offer rental /fixed /indoor /outdoor led display ,if you need that contact me please.whatsapp/skype: 8615803088171 email address: gina@atsilu.com wechat : XRX1070848443,looking forward to your reply.
good info... i pulled out an old 64x64 display found that Adafruit had sent me wrong hats for raspberry pi :( was couple years ago... way too many projects on my plate. So your research will be help full getting me started. Thank you for sharing.
First off, thanks very much for taking the time to share with such great detail. I know it can get quite involved between the video effects, editing, sound, etc. And thats not even to mention the retracing of your steps to re construct the project. I'm still doing the research in looking to put together an led matrix for my daughter's college graduation cap, but it's been a tricky road. Im studying this video you made, but I'm a newbee with this whole craft. Im open to suggestions if you see this post soon. She graduates May 1st, and I have not ordered any components yet so this may be a wash. I am pretty good with soldering, and have just recently purchased an elegoo mega complete starter kit. I have already constructed a few projects and typed in the sketches rather than just downloading them so there maybe some hope for me, as I am pretty good at electronic and mechanical repairs. I have a good soldering rework station and some cool tools too !
That’s great to be working on such a practical and flashy project this early in the hobby! For maybe simple text scrolling on clothing, maybe a display like this is a bit bulky and advanced and expensive, so I wonder if using standard neo pixels might be better. Take a look at this video and see if it might be fitting... suited...unexpected attire puns... ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-j_VvLHZEPZ4.html
Beyond informative. Saved to my library as this is a project I want to do. Actually I'd like to cube these. THANK YOU! SUBSCRIBED! Incredible amount of detail shared, fantastic work.
This is a very informative video. My question is: exactly what is it that you are using R0, G0, and B0 for? Are you shifting in 8 bit color value per line? or is it a PWM signal for each LED?
www.sparkfun.com/sparkx/blog/2650 This article mentions binary code modulation and image planes as a way to do something similar to PWM to generate the images.
As far as i know, SmartMatrix uses clever DMA and Timer tricks to manage such dispIays. I drive mine completely in software using the technique learned from (www.batsocks.co.uk/readme/art_bcm_1.htm) Because this display is 64 pixels high and uses two RGB streams, 5 address lines are present. R0 G0 and B0 drive the upper half of the rows, R1, G1, B1 drive the lower half. Fully on or fully off, hence the BCM. Address lines E D C B A select which row is being driven at the time, only two lines are actually on at any time. CLK is 'flicked' once a row is loaded, LAT copies the loaded data to the output. OE is driven high to blank the display for various reasons. With all completely white pixels, it should draw about 8A (40W) per panel. It's a bit wasteful but I store a framebuffer as bytes that are read through from start to finish straight to the output port. That way the display service routine runs at top speed. It also wastes 2/8 of the bits. Now the pixels are spread over bitplanes in the buffer which makes drawing much slower but in my implementation appearance takes priority. Gamma is about 2.5 so shades need compensation, I get 15-bit color. I currently have a Teensy 3.6 driving 8 32x64 boards cascaded to become a 64x256 15-bit 250Hz display. With double-buffering, both buffers use 80KB RAM total, and I can VSync to prevent tearing.
i'm confused about this. @8:15 you say that the series arrangement of the shift registers is too slow, but i calculated that with a 384-bit shift you can get a frame rate of 122Hz. The 2037 chips have a shift rate of 30MHz, which means 13uS to shift through 2 lines of screen, so that's 410uS for 64 lines. And for 20 modules, that's 410u x 20 = 8.2mS for the whole screen, which means 122Hz frame rate. And you don't have to wire the shifters in series. With the Teensy you have enough DIOs to have 6 parallel inputs and 64-bit shifters, so that's 732Hz.
Couple things. Most of these libraries will flicker. They do not really support more than 240Hz scan, and for the most part this is okay. The contrast is limited to around 11-12 bits however this is limited by the multiplex. (Just subtract the number of address pins if using decoder row select.) BCM is commonly used and I am not sure how many panels properly support this beyond 240Hz on the row and column side. Some panels can go a little further, but you need special logic in the row drivers and in the column drivers. Be aware of outdoor displays which do custom multiplexing.
Thanks for the very informative video, I have made a 32x32 display using a bicolor display. It is using 74238 chips for the row and 74595 for each of the colors. Interesting the Chinese took the concept from some of the projects here and made custom chips for these boards that have the same functional components. Aside from that I was curious is the smartmatrix can be modified to use on neopixel displays or apa102 displays. These are RGBW strips that can be made of any size. If there is a way do you know where a link to this would be?
I haven’t tried to use smart matrix for anything other than the panels but I see reference to the version for hardware shield being able to do APA102 github.com/pixelmatix/SmartMatrix/blob/master/examples/FastLED_Panel_Plus_APA/FastLED_Panel_Plus_APA.ino
Wait is that at 2:25 the controller you use? I read that you'll need a Beaglebone Black/Raspberry Pi 4 for 64x32 because others are not powerfull enough. Could you link the controller? Just ordered two 64x32 1/16 which i want to put together to one 64x64
The controller I used was Teensy 3.6 www.pjrc.com/store/teensy36.html and the library I used with it is github.com/pixelmatix/SmartMatrix There is now a Teensy 4 but I don't see mention in that library for supporting it, but the 3.6 worked fine with 64x64 for me. not sure how big a display it can do before issues. I haven't tried the raspberry pi but it would use this library github.com/hzeller/rpi-rgb-led-matrix Originally I tried an ESP8266 module but it couldn't handle 64x64
Hi Master, very impressive tutorial.. any body to try with 1/8 scan? I tried with 1/8 scan led module but doesn't working properly... please advise to solve for led module Hub75 with 1/8 scan
Since I don’t have a 1/8 scan display I can only guess that these settings below are what need to be changed in the sketch for the width and height of the panel and mod8scan etc #define COLOR_DEPTH 24 // known working: 24, 48 - If the sketch uses type `rgb24` directly, COLOR_DEPTH must be 24 const uint8_t kMatrixWidth = 32; // known working: 32, 64, 96, 128 const uint8_t kMatrixHeight = 32; // known working: 16, 32, 48, 64 const uint8_t kRefreshDepth = 36; // known working: 24, 36, 48 const uint8_t kDmaBufferRows = 4; // known working: 2-4, use 2 to save memory, more to keep from dropping frames and automatically lowering refresh rate const uint8_t kPanelType = SMARTMATRIX_HUB75_32ROW_MOD16SCAN; // use SMARTMATRIX_HUB75_16ROW_MOD8SCAN for common 16x32 panels, or use SMARTMATRIX_HUB75_64ROW_MOD32SCAN for common 64x64 panels const uint8_t kMatrixOptions = (SMARTMATRIX_OPTIONS_NONE); // see docs.pixelmatix.com/SmartMatrix for options
i have 2 of these panel and no teensy so im still looking for esp32 version i can run the panels with the DFRobot libs on a mega but failed to get it working on any other board . i live in hope the mega i far to big for what i want . but enjoyed how you worked this all out ..
FPGA costs a lot and is hard to develop for, if you were driving some huge commercial array of LED panels sure, but for 64x64 a microcontroller does it.
Hi I would love to know whether this has been ported to ESP32, because I can have access to these panels secondhand really cheap, the only problem is their driver card is really expensive. So I would really like to be able to drive it one panel at a time with a esp32
For drawing the wiring diagrams for simple Arduino type projects just to show the connections I use Fritzing. For proper schematics and PCB projects I use KiCad
I still like the display and would buy it again. If I intend to use multiple displays together I would buy them all at once from the same source because there may be slight variations between batches and they wouldn’t work well together visually.
Just want simple arcade games running on it :) Is it possible to drive 4 of them in chain ? So to have 128x128 ? That way it could show pico-8 games 1:1 ;)
they can be chained but the biggest limitation would probably be the processor driving it, not able to keep up with refreshing it after sending out that much serial data for that many pixels. And if the processor can handle it and somebody has written a proper library to correctly display an image with the panels sharing portions of the overall picture properly, it would have to be assessed to see if those chips like the shift registers are capable of switching data as fast as needed to get all those pixels updated to have a proper refresh rate, which I don’t know but these panels do get used in huge commercial displays. I think if somebody comes up with an FPGA controller instead of a regular micro controller that would help because I think that’s how it’s actually done commercially
In general, multiple panels can be chained and the sketch can be set to say how wide and tall the final display is, but there's limited information about the exact capabilities for maximum displays or total pixels in any orientation, or what processors can handle how many pixels, or even if 64x64 itself can be chained. I only have the one 64x64 so I can't experiment but I saw something that might suggest 64x64 is a special panel that uses an extra address line compared to smaller panels so they can't even be cascaded for some reason, but a bunch of 32x32 or 32x64 maybe can be, to get the same final result of pixels because those use less address lines and can be linked. Then the info I see says the more pixels/panels, the faster the processor that's needed to keep up, so I saw some info about Teensy 4 being able to do 64x128, or 96x96 (with lower refresh rate or something like that). So it's hard to know what will work. Originally I tried to get 64x64 working on ESP8266 and it was flickering too much to use, but when I used Teensy 3.6 it was fine because it's faster. But if I tried cascading a bunch of 32x32 or something (so they can be cascaded) to get a bigger display than 64x64 overall, I don't know how far I could go before that flickers and I'd need to try Teensy 4, which I have also and it's again way faster.
It’s limited by the memory and speed of the processor and I didn’t see any clear specifications for this library but I read somewhere that Teensy 3.6 might be able to handle one 128 x 128 so four of these 64 x 64 panels. I only have the one panel so I haven’t tried larger displays.
hi sir ,i am Gina,i can offer rental /fixed /indoor /outdoor led display ,if you need that contact me please.whatsapp/skype: 8615803088171 email address: gina@atsilu.com wechat : XRX1070848443,looking forward to your reply.
hi sir ,i am Gina,i can offer rental /fixed /indoor /outdoor led display ,if you need that contact me please.whatsapp/skype: 8615803088171 email address: gina@atsilu.com wechat : XRX1070848443,looking forward to your reply.
interesting and want make too, but all infos go out of my hair, i not understand good anythink. i think not can newer code own text roll to display or other own sign.
I suppose all libraries are written for the Arduino IDE. The Arduino IDE gives a lot of code overhead. Basically, it is a complete OS with several abstraction layers. I am always surprised to see the Arduino IDE with ESP, Teensy or any powerful ARM core chip. Using the Arduino IDE is wasting just so much power from the modern ARM chips. Writing real baremetal, for example with Eclipse IDE, would make it all a lot easier.
Mine only has abce and there is a gnd pin where d should be. I banged my head off the wall for 2 weeks only to find out they lied and its tied to their ecosystem. Im going to keep digging. None of the ics on my panel match any i can find. Ive decided to revisit it hahaha.
But, the way you are explaining was very plain, alot of boring, talking like a dead body... .. Please man ... use your inner spirit, more entertaining people in each discussion, more encouraging people that make we like or enjoying the time spend with you ir your presentation... Ok body, pls more life and spirit not like a dead body...