Controlling a CGA Monitor with an Arduino

CGA monitors may not be an amazing technological advance these days, but they can generally be found very cheaply. Additionally, they have a DB-9 connector and work off of TTL ranges (0-5VDC) making them ripe for experimentation. This hack takes advantage of all of these aspects to bring you an Arduino controlled CGA monitor.

One problem with experimenting with one of these monitors is that they are not that well documented. Fortunately, the detailed write up for this hack goes over some of the timing and frequency issues that one may encounter with this particular monitor. The article gives an Arduino pinout and the program used to drive the monitor with very detailed comments.

Although this hack is by no means a finished product, the now blurry test pattern seen above gives a pretty good proof of concept. It will be exciting to see if this hack inspires any other microcontroller-based projects. For some further information about CGA monitors, Wikipedia also has a fairly in-depth write-up about the technology.

18 thoughts on “Controlling a CGA Monitor with an Arduino

  1. Gray: what, to convert CGA display to newer? If you’re willing to forsake brown, it’s just a bunch of resistors. If you want to display other content onto a CGA monitor, *why would you do that?*

  2. @Rj – no not quite, you need a scan converter to to change CGA to anything modern (like VGA) which is a bit more logic than just resistors. But I’ll be happy to check out info on just using resistors if you have some links.

  3. *why would you do that?*

    Learning realtime programming with an Arduino the simplest way, since there is no extra hardware involved.

    Or simply because you can.

  4. Those timing distortions might actually be a use, you could use the monitor to graphically see the timing of arduino code maybe :)

  5. CGA monitors not well documented? Where is the world that you live? These are simple RGB NTSC monitors with a digital interface instead of analog…these cannot be simpler (when talking about CRT monitors), it is just a TV set without the tuner! :oP

  6. I’m an avr guy at heart, but the Propeller is the only way to go for simple, cheap uc video projects. Avr’s and pics just don’t have the resources to create a worthwhile display.

  7. It would make a lot more sense to do this with a Parallax Propeller, which can actually feed useful video while it walks and chews gum producing content.

  8. @Alex: The uzebox is certainly one of the better avr video pprojects, but is limited to tv video and still relies on overclocking and the assistance of a supplementary video generator chip. The Propeller can do svga on it’s own, and cheap lcd monitors might be even easier to source than ntsc (though it could benefit from additional memory for complex graphics).

    Each has it’s own advantages, but I was surprised how easily video projects are implemented with the Prop.

  9. @Gray Simpson: If they sync down to 15.75kHz, they’re great (albeit small!) monitors for arcade machines. Now that the original CRTs on these games typically have heavy screen burn, an old Multisync or Commodore 1084 monitors (or equivalent) are great drop-in replacements for the original 14-15″ CRTs. (I doubt they ever made 19″ monitors back then that could sync down to 15.75kHz, which is kind of a bummer…)

    All the old raster-based arcade classics used RGB/sync (either separate H and V sync, or composite sync) for video, so it’s just a matter of looking up which pins on the game’s circuit board correspond to R/G/B/sync.

  10. Hi there just wanted to give you a quick heads up.

    The text in your content seem to be running off the
    screen in Opera. I’m not sure if this is a formatting issue or something to do with browser compatibility but I figured I’d post to
    let you know. The layout look great though! Hope you get the issue solved soon.
    Many thanks

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s