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.


  1. Gray Simpson says:

    I’m interested in seeing if this could result in a CGA converter for other signals!

  2. bootnecklad says:

    That’s excellent! Now to develop it in real TTL!

  3. rj says:

    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?*

  4. JC says:

    @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.

  5. dwan says:

    Some years ago i made an arduino-based vga sync generator :

    here is what im doing with it now :

  6. nex says:

    it’s not just a test pattern. it’s a flag :D

  7. j_at_chaperon says:

    *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.

  8. Whatnot says:

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

  9. 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

  10. Agent420 says:

    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.

  11. localroger says:

    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.

  12. localroger says:


  13. localroger says:

    Duh. How did I miss Agent420’s comment before adding my own? I blame the wine.

  14. Alex says:

    @Agent420: Some AVRs have plenty of power for cool video projects – check out the Uzebox:

  15. Gray Simpson says:

    As for why, I have a whole bunch of these lying around my house from the early nineties. But not a lot of hardware hat can interface with them!

  16. Agent420 says:

    @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.

  17. Old Gamer says:

    @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.

  18. 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: Logo

You are commenting using your 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


Get every new post delivered to your Inbox.

Join 96,598 other followers