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