The Arduino is the standard for any introduction to microcontrollers. When it comes to displaying video, the bone stock Arduino Uno is severely lacking. There’s just not enough memory for a framebuffer, and it’s barely fast enough to race the beam. If you want video from an Arduino, it’s either going to be crappy, or you’re going to need some magic chips to make everything happen.
[MagicWolfi]’s 2017 Hackaday Prize entry consists of an video display shield that would be so easy to use that, according to the project description, it could be a substitute for the classic Blink sketch.
The project centers around the VLSI VS23S010D-L chip, which packs 1 Megabit SPI SRAM with serial and parallel interfaces. An integrated video display sends the composite video signal to display, with the mode depending on how many colors and what resolution is desired: for instance, at 640×400 you can display 16 colors. As he describes it, not 4K video but definitely Joust. The chip expects 3.3 V logic so he made use of a MC74LVX50 hex buffer to tailor the Arduino’s 5 V. Currently he’s working on revision two of the shield, which will include SPI flash memory.
You can follow along with the project on Hackaday.io or the current shield design can be found in [MagicWolfi]’s GitHub repository.
One should be able to get video out of an Arduino with extra circuitry. Breadboard/Prototype shield. I got video from a 1MHz 6800 following Don Lancasters idea seen in his “Son of Cheap Video Cookbook”. No CRTC needed. Just extra RAM, EPROM (character generator) and Parallel to Serial IC, some diodes… this is from my memory.
http://laughtonelectronics.com/Arcana/KimKlone/BrideOfSon%20KK%20Lancaster.html
The Arduino/microcontroller doesn’t expose its address and data buses. But you can bit bang the signals. There are many examples, eg https://www.youtube.com/watch?v=WlBXiZpuncg
Project owner here. I love all those minimal part count projects for video output. The idea here was to create a video engine where the controller can focus on the content without being busy creating the video output signals. And Color and Memory block moving without much processor load as well.
Ohhhhh, you want something with a hardware texture and lighting unit then…. and programmable shaders :-D
:-))) Yes! Shaders, lots of them. Next on the list, an 8-lane PCIe interface for Arduino. \o/
Yes it is great. Not only does your project look much better than what you can do from software., the hassle with these methods is considerable.
Good point. That’s the difference between a microcontroller and a microprocessor.
Man, that VS23S010D IC is a weird thing. Too bad it only emits composite video or other sync-on-luma encodings.
It’s basically a framebuffer chip with two different host interfaces, something probably meant for retrocomputer projects or upgrading really old systems. Now all we need is a microcontroller with a built-in 3D GPU (we already have ones with overkill 2D engines and DRAM controllers, so 3D should be possible).
You can also stack up to four of them together and use three to make VGA: http://www.vsdsp-forum.com/phpbb/viewtopic.php?f=14&t=1798
Or use it in direct DAC mode. Note that it outputs current.
The VLSI forum is a galore of good information for their ICs.
Right, especially when you are speaking RGB only and now have to understand the YUV colormap. I have an idea for a “Pro” edition of this shield that converts composite into HDMI,but that is a concept only and would use a real expensive chipset. Maybe as next years HaD price entry.
Fignition does it about Arduini like with serial RAM
I want to know his Protel color scheme for Kicad!
The only thing I did was to fill the symbol blocks in light yellow color. Everything else is default KiCAD Color settings, if I remember correctly. Many years of Protel/Altium user.
Atari 2600 had only 128 bytes of RAM and no frame buffering. The video was drawn in real time, which meant the early programmer had to account for every cycle while drawing to make sure the video remained within spec or it’d roll or tear up.
The TIA hardware could render a scan line with some simple objects and playground. An Arduino has to race pixels.
That is exactly what I wanted to avoid. The frame buffer and video output driver, as dedicated hardware, free up the main controller to do higher level stuff.