VGA1306 (VGA-out for DIY Arduboys implemented on an FPGA!)

Have not seen that one before, no.

What I would recommend though, is one of the iCE40 boards supported by the open-source ‘IceStorm’ project (look for ‘iCE40 Boards’ towards the bottom of this page):

I went with a ‘myStorm BlackIce’ board, mostly because there is a fairly active community already in place - but it was not exactly ‘cheap’, and the supply of boards has been limited so far, coming periodically in smaller batches.

There is the ‘iCEstick’ made by Lattice themselves which looks nice, and has 24 GPIOs broken out:

And I have also stumbled across a couple of even smaller boards!

This one (although IceStorm states only ‘experimental’ support for the iCE40-UP5K-SG48):

and this one:

1 Like

Also this series of videos was helpful for me to start to get a grasp on Verilog:

1 Like

This is some next level stuff man. FPGA, wow! FPGAboy? LOL.

1 Like

…more testing (prototype PCBs are in production!) just for fun, have added in a separate Arduino with a PS3 controller connected to a USB Host shield, translating button presses into HIGH / LOW pins:

Rotating-monitor-stand-in-portrait-orientation FTW!! :rofl:


Look at how those numbers are properly orientated … beautiful!


Testing Compatibility with the Adafruit SSD1306 Library (Hardware SPI first, and then the slower Software SPI):

1 Like

Assembled boards have finally arrived!

(almost a full 7 weeks after ordering… Happy Chinese New Year everyone! :dog: :dog2: )


They even have your name in the top-right corner!’

But do they work?

…they absolutely DO!! :astonished: :crazy_face:

Here’s one attached to a Pro Micro running @Mr.Blinky’s streaming-bootloader demo:


Nice! now you can play Arduboy on those huge ass Video projectors :smiley:

Does it also support commands like invert?


At the moment I have it using the otherwise unused CS pin to trigger invert, so my version of the Arduboy2 function for that is:

void Arduboy2Core::invert(bool inverse)
  if (inverse)
    bitSet(CS_PORT, CS_BIT);
    bitClear(CS_PORT, CS_BIT);

And am also using the DC pin as a sort of VSYNC signal by setting data mode at the beginning of each frame sent, eg:

void Arduboy2Core::blank()
  for (int i = 0; i < (HEIGHT*WIDTH)/8; i++)

It’s possible to write more code to properly interpret the SSD1306 commands, and I am happy for anyone to help improve the Verilog source! :slight_smile:

I had the boards made by Seeed, and they now have a big sale on for this month:

Which is making me consider whether I should try running a Kickstarter or something to try and get 100 orders together quickly and take advantage of the sale… I had 10 made in this run, and that worked out to over $40 per board with setup costs etc, but once you get up over 100 and into the bigger quantities, it knocks the cost per board down a lot…


The good thing about kickstarter is that if the goal isn’t reached then neither party loses anything.
(As long as you work out the cost and the shipping and what-not before hand.)

It would be great if you could add a audio out option.

I have this nagging that I need a consolized Arduboy in my life.

1 Like

VGA doesn’t include audio, so it doesn’t really have anything to do with this board. You could just add a separate audio mixer/amplifier on another board.

I could add flying monkeys and a hamster wheel… Either way adding the option for a board with audio out would still be a welcomed addition if going down the Kickstarter route.


I can’t imagine adding a jack would be to hard, but it might need another input pin or two to get the sound off the Arduboy.

(Presumably switching to DVI or HDMI would require a complete overhaul.)

That said, if you ever get into genetic research and managed to breed some flying monkeys,
I’d certainly be interested.
They’d certainly give my evil lair a bit of malevolent flare.
(Or at the very least give me an excuse to start saying “and your little dog too!”)

(Note to self: add flames to eyes of logo…)


I might have a peek at it later. I’ve only been tinkering around with VHDL in the past for a bit. So it may be a nice opportunity to do some Verilog

That doesn’t sound bad for a small production batch. I’ll keep them in mind.


Wouldn’t be too difficult - a lot of the information around for getting a ‘line level’ signal from an Arduino either suggests a simple circuit like this:

…or suggests using something like an LM386 because connecting directly to the pin could potentially cause havoc with power / current supply?

…another option could be seeing how @bateske would feel about talking with his contacts at Seeed and selling these boards in the Arduboy store? or integrating this design into an ‘official’ console version?

Or see if somewhere like Adafruit would be interested in producing them?

1 Like