0
\$\begingroup\$

I am trying to output a video signal with a slow microcontroller (Arduino). I don't need anything fancy like HD or 30fps, and if it takes a second to update the frame that is fine. I was looking for video protocols that have a clock line instead of requiring fast and precise timing. I would ideally like just a red, green, blue, clock and ground line, that works at any speed. Does this exist? HDMI, VGA and composite seem to have set of required clock speeds that are far too fast for my use.

\$\endgroup\$
1
  • \$\begingroup\$ what do you plan to do with the resulting video frame? ..... this may actually be an X-Y problem .... what is your end goal? ..... slow video signal may not be the ideal solution \$\endgroup\$
    – jsotola
    Commented Feb 10, 2019 at 23:10

4 Answers 4

1
\$\begingroup\$

I was able to do NTSC vídeo back in 1987 with a 68000 8MHz microprocessor and just a couple of timer peripherals and an ADC, via interrupt handlers with enough processing power left over to make it comparable to the more common microprocessors at the time.

I remember Hackaday projects of at least a decade ago in which they use PIC 18’s to do similar things.

You have considerably more processing power available in the Arduino platform (including DMA), not to mention those that already have some video support built in.

\$\endgroup\$
1
\$\begingroup\$

You should be able to directly drive a composite video output from the IO pins of an Aurduino Uno using a couple of resistors to set the levels. You'd just need to set up some timers and ISRs in the code to make it all work.

Full instructions in this 40 year old book that is still fun to read....

https://www.amazon.com/Cheap-Video-Cookbook-Donald-Lancaster/dp/0672215241

UPDATE(!):

All the work has already been done (and so well done!)....

https://playground.arduino.cc/Main/TVout

So cool!

\$\endgroup\$
0
\$\begingroup\$

The simple answer is no. The reason is that "video" protocols by definition deal with the transfer of data at "video" rates, which in turn need frame rates above the fusion frequency of the human optical system.

What you seem to be interested in is the data transfer protocols for video display devices, generally the category called frame buffers. For what it's worth, many even fairly primitive PC video cards had frame buffers, since early PC data rates weren't up to the job of real-time updating which did not produce visible artifacts.

The general idea is that the device effectively contains at least two screens worth of memory, one of which is being displayed as the other is being updated. When updating is complete, the status of the two screens is switched.

As to the details, that depended very much on manufacturer.

\$\endgroup\$
0
\$\begingroup\$

"Arduino" is not a microcontroller, but a platform; these range from beefed up 8bitters to 32 bit MCUs with FPU. But even with these 8-bitters, there's been projects in the dark past where people (barely) made them work as VGA sources. With a capable ATSAM ARM as on the newer arduino boards, this should be easier, even.

Even if they used the same Atmegas as used on some Arduino boards, what they didn't do was use the Arduino software platform, which really makes real-time operation really hard.

The by far easiest way to go here would be spend 5.41€ on a raspberry pi zero, and let that handle the displaying. It's really not that uncommon to separate control and display jobs between a microcontroller that you can program in a fail-safe and real-time way and an application processor that is rich in media interfaces.

All alternatives end up being "small graphic cards", interfacing of which is all way more complex than what you probably had in mind.

\$\endgroup\$
6
  • \$\begingroup\$ I've personally used an Arduino Uno r3 to output perfectly workable monochrome NTSC video. \$\endgroup\$
    – Hearth
    Commented Feb 10, 2019 at 18:29
  • \$\begingroup\$ ha! Awesome; let me guess: SPI peripheral with timer-controlled DMA to get the monochrome pixels out? \$\endgroup\$ Commented Feb 10, 2019 at 18:30
  • 2
    \$\begingroup\$ No peripheral, direct bit-banging. It ran the processor really hard and there wasn't room for much else on it; a Mega could probably do more in addition to the video. When I say monochrome I mean two colors, black and white, not grayscale. It was very low horizontal resolution, too. \$\endgroup\$
    – Hearth
    Commented Feb 10, 2019 at 18:31
  • 1
    \$\begingroup\$ ...on second thought, maybe that doesn't really count as "perfectly workable" when an Atari 2600 had a better resolution. But still. It worked and the TV didn't complain. \$\endgroup\$
    – Hearth
    Commented Feb 10, 2019 at 18:48
  • \$\begingroup\$ I wouldn't complain, either, I think that's a pretty neat feat to achieve with an Atmega328P \$\endgroup\$ Commented Feb 10, 2019 at 18:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.