Building Arduboy clone in Electronics Class

I have only recently come across the Arduboy. I have been getting back into teaching electronics / code and I am wanting to develop a project for year 13. This would involve students designing and making a full PCB, case and everything else. We have 3D printers and laser cutters just waiting to get going on this type of project. I have been working / playing with the micro:bit and the Raspberry Pi both of which have strengths but the Arduino combined with Arduboy and the gaming design is just fantastic. However, as a “had to learn it all in my lunch time” electronics teacher with a background in graphic design I have encountered by first issue. I am trying to put together a working DIY clone based around the bits that have been posted to me so far. I have on order a couple of Nanos and SPI oled screens. I also have in my over excited hands two Pro Micros and a couple of I2C oled screens. I have loaded all the libraries into the IDE and the board to support Arduboy 1 and 2. However I am still sitting with a blank screen. I have tested the screen by using an Adafruit sketch and had it working. This involved changing the 1306 driver library a bit so that it was set to a 128x36 screen. Also had to change the address of the screen in the Adafruit sketch. I basically followed the instructions here-

The screen works and runs the graphics. Unfortunately no such luck with the Arduboy sketches and libraries. I have uninstalled the IDE, deleted the Arduino libraries from my documents folder and reinstalled everything to start afresh. Still no luck.
Anyone got any idea how I can get this going?
Or should I just wait for the SPI screen to arrive?

I am not too worried at the moment about the speed of the display I just would like to get things moving. Ultimately at level 3 students have to show understanding of I2C serial communication. This type of learning will be great for them to grapple with once I have learnt how to solve the problem myself.

I don’t suppose the answer is as simple as changing the address of my I2C screen is it? Currently the screen is set to 0x3c.

It would probably be helpful to know precisely which code is and isn’t working.

There is an I2C version of the Arduboy library available:

But ultimately using SSD1306 SPI screens will be much less hassle for both you and your students.

Not that it’s particularly relevant, but just to check, are you perhaps based in Britain?

I am starting to think that at the moment you are correct. This is a big, exciting, jump in my understanding of arduino and retro game design. The main thing I need is to make sure there is enough learning in the background to support their assessments. Looking at what I have learnt they can talk about the basics of how I2C works in relation to clock and data signals. Then combine this with looking at the different speeds of the I2C and SPI. A bit of experimentation and getting stuck and then they can go with SPI. Some of the clever ones (brighter than me) may want to get the I2C going.

I used to be based in the UK. I moved over to New Zealand about 13 years ago. Living the dream in paradise. :rofl:

1 Like

For an Arduino Nano with an I²C display, there’s this:

1 Like

Thanks for the links. I hope to build both the I2c with the Nano and the SPI with the Pro Micro when all the bits arrive. Hopefully my limited skills will let me get one of them actually going. :crazy_face:


There’s several reasons why I2C isn’t as desirable for an Arduboy clone:

  • You can’t use precompiled programs intended for the official Arduboy because they’ll be targetting a different screen
    • Naturally your choice of chip will affect this too…
  • You have to direct your students to use the ‘homemade package’ instead of being able to follow the instructions for a regular Arduboy
    • Again, the chip also affects this…
  • You have fewer devices to compare it to (i.e. for comparing a non-working device with a working device)
  • It achieves slower framerates

But of course, if your hands are tied in regards to knowledge the students must demonstrate then it’s worth trying to get an I2C system going, but if you can match the official hardware (ATmega32u4 + SSD1306 over SPI) then you’ll have an easier time and can use that as a backup plan if you can’t get I2C working.

It almost certainly is possible to get I2C working, it’s just a bit more effort.

Ah, Kiwiland must have similar terminology to the UK system then (i.e. year 13, level 3).

Nanos have just arrived in the post. So will have a play with them and the I2C route but will end up using the SPI. Great for the kids to be able to explain the reasons why this is faster and it will allow them to justify their final choice of components. Of course to be honest, I just want to get one going so I can play the games. Once a gamer always a gamer.

Hey Bro … Where in NZ are you? Although I am Australian, I have a number of friends who live in / came from NZ,

Up in Kerikeri in the far north. North of Whangarei.

That’s about as far north as you can go :slight_smile:

Got my other bits in the post so have an SPI linked up to the Pro Micro and everything seems to be working now. Got the buttons all wired up and even sound going. Just been trying it with Breakout. Everything seems to be working but the screen is a bit flickery. Still cool. Still feeling like a noob. For example, what is a bootloader? Anyone got any directions to a good place to get a general grounding in all things Arduboy?

No, its the deep south for people up in Kaitaia :rofl:

1 Like

Ok. Sorry folks. I have now found the package for home made Arduboy. It seems to be full of loads of features and looks like it will help support alternative screens as I am sure the first thing kids will be shouting for will be a larger screen.
Once again sorry I am a bit of a noob but this is one of the most exciting things I have discovered in relation to teaching for years. The Rasp Pi is just too expensive over here if kids fry something. Also it lacks the whole playing around with the electronics aspect. This thing is just … a word I never used till moving over to NZ…AWESOME. I feel an 8 bit game explosion going on at my school soon.

Maybe the 2.42" one in this thread will suit the kids?

They are $30 AUD."+oled&_osacat=0&_from=R40&_trksid=m570.l1313&_nkw=2.42"+oled+SSD1309&_sacat=0

1 Like

The above article doesn’t mention that another Arduino board can be programmed and wired to act a programmer (more specifically an In-Circuit Serial Programmer, ICSP or ISP), that can “burn” a bootloader into an Arduboy or other board.

@Mr.Blinky has written a bootloader (actually a collection of them) that he’s named the Cathy series. (The Arduino Leonardo bootloader currently used by the Arduboy and many other AVR based Arduino boards is called Caterina.)
The Cathy bootloader can do all that Caterina can but is smaller and/or provides more features, such as support for saving and loading games stored on a serial flash memory chip.

Burning a new bootloader into an Arduboy can be a bit tricky because the pins that you need to connect to aren’t brought out to a header or other connector. There are, however, pads on the back of the circuit board that can be soldered to or temporarily attached to using “pogo” pins or just hand held wires if you have multiple, steady hands.

1 Like


Hardware. Maybe:

And of course lots of information in the many topics in this forum’s Homemade category but not too organised.

1 Like

Spot on. My credit card is doing the business.

A bootloader is the first block of code that a computer runs to get everything else up and running.

On a desktop computer the bootloader is quite complex and has to get all the hardware bits and pieces up and running.

On the Arduboy the bootloader is a lot simpler, it’s more or less a kind of micro-program that handles the ability to overwrite the main program via serial communication over USB.

If you’re not planning to use the FX chip mod but are planning to use something with an ATmega32u4 then you’re probably fine just using the default bootloader.

It’s a word I make a point of never using. :P

1 Like

@Pharap is correct. However, if the circuit board will use a bare ATmega32U4 soldered directly to it, as opposed to this board just holding an actual Arduino board, then you will have to burn a bootloader. A “factory fresh” ATmega32U4 likely won’t come with a bootloader installed. (At least, not an Arduino bootloader.)