SSD1351 chipset Arduboy?

Hi I am wondering if it is possible to use this screen for a DIY arduboy.

https://www.jaycar.com.au/duinotech-1-5in-128x128-oled-colour-display-module/p/XC3726?pos=6&queryId=ca63feba38362f4cc6da7d0c8aa1c741&sort=relevance

Features:

  • RGB 128 x 128 pixels
  • SSD1351 chipset
  • Passive Matrix Display
  • 262,144 Colours
  • 1/128 Drive Duty

Thanks :slight_smile:

If you go beyond 128x64 pixels with 1 bit colour, it’s not an Arduboy anymore.

However, with a modified library you could crop the display to 128x64 and use one colour/intensity each for the foreground and background to render Arduboy sketches.

I think at the lowest colour mode you need 2 bytes per pixel, compared to 1 bit per pixel for the Arduboy, so updating the display would be at least 16 times slower. This may make some sketches run slower than they should.

3 Likes

In addition to what @MLXXXp said, bear in mind that you’re probably going to have to at least reimplement Arduboy2Core::paintScreen() so you can draw the Arduboy’s frame buffer to this new screen. (As well as replacing some of the code that sets up the screen, e.g. Arduboy2Core::bootOLED().)

Since you’re using ESP, you’d probably be best off looking around for one of the already existing Arduboy2 ports for ESP devices and then forking it and modifying it to work with your chosen screen.

2 Likes

I think you run out of memory trying to hold the image buffer.

No, you could use the same 1K image buffer as the Arduboy. You would have to read each pixel from the buffer (by shifting, anding, etc.) then write each pixel as two bytes in one of two colours that depends on whether the pixel is on or off.

In other words, you don’t have to build a buffer containing all the bytes you have to write to the display. You can translate each pixel to one of two colours then write the two bytes for that pixel “on the fly”.

2 Likes