Pokemon Mini Arduboy (and other experiments)

I like how they tell you that you can get -5% now or wait a few days and get it for -10%.
(Of course, that’s assuming they have any left in stock by the time you get chance to buy something that day. I wonder if buy-bots are a thing yet?)

It’s kind of an odd selling strategy. with near 10000 pieces available. I doubt they run out of stock before that.

I was too distracted by the deals, maybe it’s not a crazy strategy after all :P.

Frankly I admire their honesty, intentional or not.

I’ve been playing around with Arduboy display code and was curious how a 96 x 96 OLED display would look like so I made a quick hack to Mystic Balloon and Arduboy2 lib. The display uses a SSD1329 controller with 4-bit grayscales. But only two colors are used

I think I’m going to get one of those 128x96 versions to play with now :slight_smile:

7 Likes

How do you edit the lib?

You get a copy from the github page and just edit it like any other bit of code.
(And also make sure you obey the licence if you try to publish your edit.)

1 Like

how do I edit the library to an sdd1306 i2c?

I think that’s a better question for @Mr.Blinky since he has experience in adding new screens, I don’t.

It’s a safe bet that it involves changing the functions that interact with the screen though.

I haven’t tinkered around with I2C as it is too slow in general. On Arduboy’s atmega32u4 MCU It’s 20 times slower then SPI (SPI clock 8MHz, I2C clock 400KHz).Translating this to framerates and MCU power, using SPI it takes rougly 1.2 milliseconds to draw the Arduboy screen and consumes 7.2% MCU power at 60 fps. with 7.2% MCU power, I2C can only draw 3 frames a second. The best framerate you can squeeze out of I2C is 30 fps but then it sucks up 72% of the MCUs power.

but if you want to try I2C with the Arduboy2 lib. You’d have to change the boot and paintScreen functions. First you would need to setup the hardware (SDA and SDL for I2C mode) in bootPins, change bootSPI to use I2C, then send the initialization commands to the display with bootOLED and finally adapt the paintScreen to send the 1K displaybuffer over I2C.

2 Likes

The reason I have an i2c is because it was supposed to have spi and the other one but it was a 4 pin not a 5 or 7 so I thought I might as well use it. Also can you send me a pm on how to because I don’t under stand. Ps can it work for 4 pin i2c and 7pin spi? At the same time?

There’s a few 328p projects including Tiny ThatBlockgameWeCantSay that use I2C on YouTube you check the source code in the descriptions if your looking for some reference material.

1 Like

This video seems to be a nice simple demo of speed difference without going into the technical side of things too much:

(Note: make sure you have captions turned on.)

For a technical explanation, this one seems reasonable.

1 Like

ThatBlockGameWeCan’tSay?? :thinking:

We can say it, we just can’t make one. Tetris.

Oh I thought you were talking about Tinyduino (because they assemble like blocks :joy:) I do love tinyduino though… :thinking:

1 Like

Other then showing that I2C is slower then SPI it is not giving an good impression the speed difference. You may get the idea that SPI is rougly just twice as fast.but it can be much faster.

I can’t give you an exact how to as I would have to figure it out on the go. Technically you could use I2C and SPI at the same time. but it would consume more program space and waste a lot of MCU time you’re already short on.

I won’t bother you with techy details but I think Mystic Balloon could run with an SSD1306/9 over I2C at 25 fps

Here’s a techy timing table for different displays:

SPI 128x64 1-bit ~1,2 msec 7,2% MCU load at 60fps
SPI 128x64 4-bit ~4,8 msec 28,8% MCU load at 60 fps
SPI 96x96 4-bit ~5,2 msec 31,2% MCU load at 60fps
SPI 128x96 4-bit ~7 msec 42% MCU load at 60fps

I2C 128x64 1-bit ~23 msec 72% MCU load at 30fps

1-bit stands for 1-bit display like Arduboy uses SSD1306 and other displays using SSD1309 and SH1109
4-bit stands for displays with 4-bit grayscale of which only 2 colors are used SSD1327/29
the time in msec (milli seconds) stands for the time that it takes to send the display buffer to the display
MCU load stands for the percentage of time the MCU is busy sending data to the display.

I created this table to see weather it would be feasable making an Arduboy clone using a different resolution display and if I should get that 128 x 96 display with 4-bit grayscales :slight_smile:

3 Likes

@Pharap I grabbed the 1.54" display :slight_smile: there’s still plenty in stock

I also grabbed that 128x96 grayscale display. The 4:3 aspect ratio will give a nice retro-ish look :slight_smile:
I’ve tweaked Mystic Balloon a bit more to support both 96x96 and 128x96. The latter will have a lower framerate though.
96x96 runs 60fps most of the time :slight_smile: It looks pretty cool running on 96x96 now.

7 Likes

PIP BOY!!!

  • No Pip Boys
  • Yes Pip Boys

0 voters

2 Likes

@Mr.Blinky Thank you for adding the other Display options. 1.3” SPI SSD1306 becoming a pain to find with the way sellers are listing them some even use them as the image for totally different model I2C displays. The SSD1309 models seem pretty nice and easy to find with the added bonus of some additional size.
I’m just not sure what size I want I’m torn between the 1.54” and the 2.42” displays.

I also want to look at ditching the screen and consolize the arduboy using TVout where I can use a bunch of inexpensive Pro Micro clones as game carts or a Pi for mirroring and flashing games.

1 Like

@Mr.Blinky Did you ever get your DIY Pokemon Mini Arduboy finished and if so are you able to post some photos?