A look at a retro LED matrix display project and problems with some eBay LED matrix modules
Good morning all…
Youtuber, shed dweller, solar charge controller aficionado
This site uses Akismet to reduce spam. Learn how your comment data is processed.
stacking them vertically just means youll have to use wires instead of jumpers
I made one in the 90s and I used horizontal bytes Because vertical bytes would have been too dim with all the multiplexing. 1/7 brightness is much brighter than 1/32 brightness (multiplexing duty cycle).
You waited all that time for the magazine to come out only to find they spelled your name wrong Julyan, or should I say Julian !
In the magazine is written Julyan instead of Julian?!
Bought heaps of different LED 8*8 matrices and at the end of the day they all worked but were a pain in the butt for one reason or another to cascade. My next project is using a DIP version of the MAX7219 using the 3mm 8*8 array in a 4*1 configuration that can be linked.
Provided the 4*1 works and can be linked and I got the spacing right will make similar for 4*2 and finally 4*4.
As for buffering I have multiple bitmap classes for 1,4 and 16 bit displays so use the 1 bit version for these. The 1 bit version (here's the trick) has 2 mapping options so I use the one that mimics the MAX7219 output format 1:1.
My MAX7219 class has an output buffer method that expects a frame buffer and it simply transfers the lot. On my Due it uses DMA at a clock of 20Mhz to do the transfers which can output well over 100 FPS with a 32 * 32 pixel grid.
I also found the original code I used for the MAX7219 was quite shockingly slow. It use to clock a lot of NOP operations and over multiple devices it would choke. Basically I send each byte just once but send in reverse order as they get shuffled along.
Bit-per-pixel video displays almost invariably orient bytes horizontally because everything on a row needs to be sent consecutively because an N-dot display will only need to fetch N/8 bytes per line, instead of fetching N bytes of data and discarding 7 bits from each. Scanning top to bottom generally looks better than scanning left to right, and unless a display's memory is set up to group bytes differently when fetching than when writing, that implies that bytes get oriented horizontally.
My more modern pet peeve is with color oled/lcd displays that require shifting in 16 or 24 bits per pixel. Adding a 256-color LUT and then having an option to write 8 bits per pixel shouldn't cost much, but would make microcontroller-based screen updates almost twice as fast.
Why was your name spelled Julyan back then?
I had this problem on a display like your and all I had to do was make changes to the header file for the Arduino library I was using. I used the MD_MAXX7219 library and after making the changes it worked great. I think learnelectronics has a video on it.
Just look up Character ROM. Remember old CRT terminals scanned from left to right.
I've been fighting this myself for months.. the two arduino libraries that seem to address this problem are MD_MAX72XX and MD_PAROLA .. they seem to be written for this type of orientation..
For cascaded modules you better use a software display buffer (bitmap), because you can easilly build e.g. 16X128 pixels matrices. You can put bits to the buffer any way you like. Finally, a Paint() or simillar function transfers whole bitmap to the MAX ICs. I could send you my software 'driver' if you like.
I agree. The chip was meant to drive 7s digits. Anyway, you can arrange anything you like in software 😉 (1. Create display_buffer, 2. Fill with pixels using by column method, 3. Transfer it to the matrix using the matrix orientation)
Can you buy the back boards for the matrix modules? I have 6 modules, but no idea now how to use them, as I'm a bit of a noob.
Would matrix transposition work? Not really thought much through but that would be my first thought?