DIY Arduboy - problem with SH1106 screen

I think that I have problems with Arduino IDE, the device itself worked and was not subjected to any damage.
The problems started when I started using another computer.
There is some sort of special sequence for setting up the Arduino IDE for the Homemade Package to work correctly?

There only requirement besides installing the homemade package is that no Arduboy libraries must be installed manually or through the library manager.

For your Arduclone. you should select Homemade Arduboy board and then based on Arduino Leonardo (or sparkfun Pro micro 5V standard wiring) and display SH1106 from the tools menu.


Just to rule out any software setup issues, here’s a hex file of Castleboy for use with use with standard wiring with a SH1106 display. I’ve confirmed this wiring up a ProMicro with the wiring you use.

It was build using Arduino IDE 1.8.7 and HomeMade package 1.2.5

1 Like

Thank you very much for helping me a lot
I enjoyed it very much
I had a sh1106 but it did not work properly!
Now the problem is solved, thank you very much


This page sh1106 had 4 pins and I was able to add more pins using the datasheet and pinout.
I uploaded single games with the arduino IDE.

Now with your help I was able to build an Ardubo with flash memory but my ssd1306 screen is small and dim and blue.

The sh1106 screen is white and bright.
1.3 "has a better size than ssd1306.

How to match Arduboy with sh1106?

When using a SH1106 display all games need to be recompiled. If you managed to break out the extra pins for SPI then you can just select SH1106 display in the Homemade package. If you want to use I2C there is I2C support for SH1106 now too. In which case you need connect:

  • display SDA to ProMicro pin 4 / PORTD4
  • display SCL to ProMicro pin 6 / PORTD7


How do I compile games?

What is your suggestion for I2C wiring to SPI?

I used your replacement package for sh1106 but it did not play music
In some games, the screen does not move forward and freezes slightly after movement

Now with your support I was able to build an Ardubo with flash memory
I want to use sh1106 in it

display SDA to ProMicro pin 4 / PORTD4
display SCL to ProMicro pin 6 / PORTD7

The screen is not good
Some games have good screen

You get the source code of the game and use the Arduino IDE with Homemade package to recompile it using the Export compiled binary option from the sketch menu.

I thought you found a way to break out the signals required for SPI on your I2C display. I guess I misunderstood.

Unfortunately not all displays work with the I2C implementation. You can try and add bypass capacitors between GND and Vcc to help reduce noise.

If you want to use a bigger screen and easy use I can recommend this 1.5"SSD1309 display. original games can be patched on the fly so you do not need to recompile games.

1 Like

I compiled the code and uploaded the hex file to the board
The game has good music but the screen is black
I tested the SSD1306 I2C, it is also black and it does not show anything

When I decided to build the Arduboy, I did not know enough about the screen
I bought two SH1106 screens :slight_smile: If I knew it was not working well, I would buy an SSD1309 screen.

I have a 2.4-inch touch screen and an Arduino Mega and ESP32 module.
Are there ardubo games for this?

I compiled the game for SH1106 and replaced the new hex file with the previous hex file

When I turned on the Arduboy DIY, the game ran with SH1106 and it also has music

But when I hit the reset button in the menu, the screen is black

I removed SH1106 from the header pin

I put the SSD1306 in the header pin

I hit the reset button

The screen image is good
No code change

I compiled the game and renamed it in CSV and created a new Bin file but the game with SH1106
Only works in on mode,
It does not work after pressing the reset button and is only good with the SSD1306 display.

I uploaded the game individually and it works fine with SH1106

This is a little weird for me!

You’re talking about the I2C SH1106 display module right? I asume you are with this reply

The bootloader menu doesn’t support I2C displays yet. so the screen remains black.

Note that pressing reset doesn’t reset an I2C display as it doesn’t have a dedicated reset pin. An I2C display only resets by turning power off and on again.


I bought an SSD1309 for Arduboy
But it has problems

I do not know to which pin I should connect the CS pin

I tested the transistor circuit for the CS pin but there is still a problem with the screen

CS >>> GND
CS >>> TX
CS >>> 2
I tested these modes but the screen was not good :frowning:

I assume you’ve wired your DIY Arduboy up according to the standard wiring?

As the transistor solution doesn’t work stable for you you can try

  • connect CS of the OLED display to GND
  • connect FLASH CS (RX or SDA) and SPI SCK to an and gate and its output to OLED SCK as sugested here

Thank you, Mr. Blinky

I noticed that the screen only has problems when it works with the battery, but when I started with a 5-volt, 2-amp adapter, it works without a problem.

Does the SSD1309 display only work with 5 volts?

That depends on the display module. Some are intended for 3.3V others also support 5V. But the issue may be that these displays draw more current than the SSD1306/SH1106 displays (displays are more brighter) especially when there are a lot of pixels turned on.

I don’t know what capacity battery you used but I guess The lower battery voltage, battery capacity and noise on Vcc causes the transistor inverter circuit to malfunction.

1 Like

In oled SSD1309
I used 270 instead of inductor 220

Now the screen displays well and works with a 3.7V 300mAh battery :slightly_smiling_face:


Nice idea!.

I asume the larger value inductor draws less current and generates a lower voltage resulting in a less brighter display?

does it also work for games that use a lot of white pixels?

1 Like

Pretty sure the boost is closed loop, so long as the boost ratio is reasonable given the pwm resolution and range the output should be fixed. Increasing inductance would affect ripple, frequency of ripple, and current.

1 Like

The screen is well lit.
The brightness is not low and still acceptable!

I thought the problem was with the OLED pins

You mentioned the flow and my mind went to the amount of flow.
I tried to fix it and by chance it was a great result!

I compiled and tested several games for SSD1309.

1 Like