Comparison of 3 different techniques for driving an SPI OLED display. The Adafruit SSD1306 library, the u8glib and some code I threw together myself.
https://github.com/adafruit/Adafruit_SSD1306
https://code.google.com/p/u8glib/
Arduino sketches used in this video:
Adafruit sketch: http://hastebin.com/awiwiwatas.avrasm
u8glib sketch: http://hastebin.com/mefuhayega.coffee
Julian's sketch: http://hastebin.com/irivukulef.coffee
font.h: http://hastebin.com/wizowutuji.vala (this font file is required by Julian's code and sits in the same folder as the .ino file)

By Julian

Youtuber, shed dweller, solar charge controller aficionado

17 thoughts on “Tested: display libraries – adafruit, u8glib, homebrew code”
  1. Avataaar/Circle Created with python_avatars ζž—ζ…ˆεŽŸ LIN CIYUAN says:

    I wonder if we can drive a SPI display with I2C interface?

  2. Avataaar/Circle Created with python_avatars Kapitan Strong says:

    How you connect this oled?

  3. Avataaar/Circle Created with python_avatars TAOdaMATA says:

    Do you know a driver SSD1306 for AVR but not ARDUINO? I dont work with arduino

  4. Avataaar/Circle Created with python_avatars Grzesiek says:

    Sketches links are dead.

  5. Avataaar/Circle Created with python_avatars Readme .txt says:

    Nowadays, there's an Arduino "ss_oled" library by Lary Bank that runs even faster (4ms latency, 250 fps on i2c interface, 1 MHZ). It also includes many useful font styles and sizes, text wrap feature, text scrolling, drawing graphics and so on… ;-))

  6. Avataaar/Circle Created with python_avatars tornadokat says:

    I'd be curious if you could do this refresh rate test again with current versions of the libraries to see if they have been optimized to run faster after 6 years.

  7. Avataaar/Circle Created with python_avatars dentakuweb says:

    I know this is a very old video but I noticed that Julian is using Software SPI with the Adafruit library.
    With Hardware SPI I get around 4500.

  8. Avataaar/Circle Created with python_avatars Bob Ross Adventures says:

    Brilliant subbed!

  9. Avataaar/Circle Created with python_avatars maicom coelho lopes says:

    muito obrigado

  10. Avataaar/Circle Created with python_avatars 1kreature says:

    Have a look at the SPI speed…
    I2C is slow but SPI can be very fast.
    Using an MCU that can do DMA and getting the DMA to feed the SPI for the data transfer also means it can happen in background while you do other stuff.

  11. Avataaar/Circle Created with python_avatars Aleksei Litvinov says:

    where I can get upir lib? the links do not work anymore…

  12. Avataaar/Circle Created with python_avatars edgeeffect says:

    I can't find your code in hastebin any more…. any chance we can have it somewhere else? πŸ™‚ πŸ™‚ πŸ™‚

  13. Avataaar/Circle Created with python_avatars RAMA CLUB says:

    when you use static unsigned long can you put register in there?

  14. Avataaar/Circle Created with python_avatars Eddie Amaya says:

    what speed is the spi set to?

  15. Avataaar/Circle Created with python_avatars Nino says:

    Why does it need to be super fast, are you aiming at playing Fortnite on it?

  16. Avataaar/Circle Created with python_avatars Brick Missing says:

    FYI – updating a 128×32 OLED using 8MHz SPI on a pic32mx takes 1.24ms. So I guess your 128×64 should take about 2.5ms to refresh.

  17. Avataaar/Circle Created with python_avatars TheRainHarvester says:

    Does the greater amount of text printed in the first test (as compared to the second) make the first run slower?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.