Arduino VGA Frame interface project.

Here is my VGA card in its completed Glory. Over the next few posts I’ll explain some of the theory behind it, and more importantly, I’m going to try to describe some newbie electronics issues I met and how I overcame them. When I was building this I found myself constantly researching in many books to figure things out. My mind sometimes is too rebellious, and when told, do it this way, it asks, ‘Why?’. It turns out it’s really difficult to find the answers in many cases, so I’ll try to dump as much as I can on this blog.

 

Electronics, A personal history.

 

I have always been interested in electronics,but I always found myself blocking on really sitting down and learning electronics, rather than just building kits.  I remember spending hours and hours building circuit after circuit with a Radio Shack 75-in-1 kit when I was 10-14 years old. I hoped to eventually learn why this resistor needed to be there or this capacitor. Reading through the booklet included I kind of understood, but I never really found a project that captivated my interest. During highschool, my electronics class consisted of figuring out the correct voltages and thickness of pencil lead that would melt staples or anything else we could find around. Well, either that or arguing Ford vs Chevy vs Mopar. I tried to build a ‘de-scrambler’ for TV, but lets say my teacher while ‘energetic’ either had his hands full with tool thieves or just wanted to appease them so he never really got around to teaching any serious theory or any help with my project. It was there I found out that car speaker box construction was ‘electronics’.

At my first job outside of college I got a look at a different view of electronics. There at Cymbolic Sciences, I was surrounded by electrical engineers and since we designed all our own processor boards, I just started hearing about Microcontrollers and FPGAs. I never got my hands on one, but my job brought me into contact with Matlab and more importantly, Simulink. Simulink can be used for many things, process simulation being one of the main things, but I found some elemental logic building blocks within it that piqued my interests. Using it this way it reminds me now of programs like Logisim. I remember spending one night (I worked the 4pm to 1am shift), playing around figuring out how to get the NAND gates to act as a simple flip/flop. Then I built a multiplexor and de-multiplexor out of logic and glued these with the flip/flops into a 64bit RAM block. Then I used that block in a different simulation… and well, I ran out of the 64 MBs of RAM my laptop had.

I would over the course of a the years experiment with different logic simulation programs; I got my wife to buy a copy of NI’s Circuit design suite using her student discount for example, but I was always stuck on ‘what to make’.

Then, a few years ago, my friend Delaney introduced me to a book, “The Black Art of Video Game Console Design”. I immediately was inspired, in a few days, my Xgamestation Pico was delivered and me and Delaney were planning many projects. I was most interested in writing to video. The Pico is around the idea of using a microcontroller (the SX-28)to handle all the video timing signals itself. This meant that in your program (written in either sx-28 assembly or a primitive ‘basic’) you had to deal with 80% of your program working around video timing and display. I got the idea of building a logic based video driver that the pico could write to and it would do all the video display. The first design used NTSC, but I found the color handling of NTSC to be really discouraging. That’s when Delaney told me what he learned about VGA. If you could handle the speed, with VGA you just had to control three voltages for the three colors, and you just need to bound two control lines to handle the vertical and horizontal syncs. Aha, I thought, here is the answer.

Around that time, I went to a Maker’s faire, I think it was the 2nd one, and saw the Arduino projects. I was trying to work around  the lack of control lines of the sx-28, and the pain of programming in assembly. I was considering the sx-48, but it was surface mount only, and I didn’t want to work with that… yet. But here, I could just buy an Arduino Mega, which was literally right in front of me, and I’d have as many control lines as I’d want, all with a nice little header to plug into. Plus, a really nice programming interface that was C based, instead of assembly. That’s when my VGA based video circuit solidified.

 

New Project Released Live

So, I’ve been working on an app for FoxSports for a while now. Its been more or less finished for a few months, but finally its gone live. Its nice to see some press about it, including TechCrunch picking it up. On capable browsers it uses some new fangled CSS3 animations, I used the translate3d function to get some GPU help on Mobile Devices, and on webkit it looks awesome. Unfortunately webkit also gave me the biggest problems. Between Safari only allowing clicks on certain divs constrained by their siblings and Chrome blowing up the layout when a fixed position DIV was nearby, there were many many headaches. Just glad it all looks pretty cool in the end. Most of the coolness is from Sarah Waterson’s awesome design though.

http://techcrunch.com/2012/06/06/luminate-foxsports/

Starting Out

So…

A blog. In the past years I’ve had thoughts and projects that I’ve shared on Reddit and other sites. I’ve spent time composing rebuttals, articles, pictures and assembled electronic projects and webapps only to have them lost to history or scattered across the internets. Here I’ll try to accumulate them into one spot.