I did a quick experiment of what an Arduboy with a color screen could look like using a Particle.io Photon and a 1.8" TFT 160x128 18-bit color screen with a ST7735 controller.
- Lots of colours (262 144 shades)
- Resolution similar to a Game Boy Color and nice ratio (160x128 pixels, 5:4)
- Same price as a monochrome OLED ($3)
- “Tearing effect” pin broken out
- Slightly lower contrast and viewing angles than an OLD
- Double-buffering requires at least 2.6KB of RAM (1-bit) up to 46KB (18-bit, full color)
- Pushing all this data may require SPI DMA
Note that the ST7735 library from Adafruit currently doesn’t use a buffer and so each shape drawn must either be cleared afterwards, which is not convenient, or the whole screen must be cleared, which induces some flickering as drawing shapes is currently quite slow. To solve this, one would need to improve transfer speed (using SPI DMA and/or 12-bit/pixel 4:4:4 color transfer), synchronise the redraws to the “tearing effect” pin and use a buffer. A buffer requires a lot of RAM, so I have put below different buffer sizes and the RAM of a couple of micro controllers.
- 1-bit, black and white, 2.56 KB
- 8-bit, 256 colors, 20.48 KB
- 16-bit, 65 536 colors, 40.96 KB
- 18-bit, 262 144 colors, 46.08 KB
- ATmega32u4 (Arduino Leonardo), 2.56 KB RAM
- ATSAMD21G18 (Arduino Zero), 32 KB RAM
- STM32F205RGY6 (Particle.io Photon), 128 KB RAM
In conclusion, it seems that using the microcontroller from the Arduino Zero with a 1.8" color screen at an 8-bit depth (256 colors) would require quite a bit of engineering but should not cost more than the current 1.3" OLED + Arduino Leonardo solution.
What do you think?