Crisp, cute, small, bright, cheap, parallelisable OLED display

Hello,

This is a (relatively long) post on an interesting and very crisp, cute, small, cheap, relatively fast, graphic display:

I have discovered recently (www.digole.com) a very small (0.96") but very nice graphic display, based on OLED, i.e. each pixel of the display can emit light, (instead of the standard LCD display where each pixel can block light from backlighting leds.
As a result, the display is extremely visible, even with sunlight present. Resolution is 128X64.
The particular reference I have been experimenting is Mono OLED--0.96" Serial: UART/I2C/SPI 128x64 OLED Display Blue DS12864OLED-2B(CN)...

3 interfaces type are there on the display, and one can choose by a simple jumper, either serial, or I2C, or SPI.

As a bonus, the display is reasonably fast (as seen on their posted demo), and moreover, only "high level" commands are sent to the display (which incorporate a microprocessor), saving memory the arduino. Fonts are preloaded, and I found that font 10 is still extremely readable and crisp.
With this font, up to 6 lines of 25 char/line may be displayed.

I have experimented with both the serial, and the i2C, and it worked out of the box with the libraries that they give.

A further point of interest that I had initially not identified, is the fact that the I2C address can be changed easily, and this change is persistent (survives power loss, e.g. is stored in EEPROM): As a result, it is possible to operate several screen in parallel on the I2C bus , multiplying the total display capacity !
I am presently operating 2 of those displays on the I2C bus on the same Arduino. Given the fairly low price of the unit, I now plan to add 3 or 4 such displays on my single Arduino.

A yet further point of interest (also that I had initially not identified), is the presence of a high-level command enabling the relatively fast displacement of a whole block of pixels on the screen: I realize now that this opens the way to displaying time data with a moving window, e.g. the new data point shifts the the left of the screen the older data points. I have not started such implementation, but this is begging for it.

A last point: they advertise that there is also a port on the display with 5 pins for digital output; actually (i) the library they give does not comprise such additional port control, and (ii), when testing with a voltmeter, pins 0,2,3,4 are set to zero, but curiously pin1 is set to 1 (on the 2 displays that I have)
Furthermore, (iii), I have tried to add the missing functionality to the library (simply following the general line of the writing of the library), but with no success.
Here below are the snippets of code I added, but without gaining control on the port !

Is there a suggestion on this last point for programming ? have others succeeded on controlling those pins ?


added to DigoleSerial.h :
void digitalOut(uint8_t zz); //** added: send Digital byte data to suppl. output pins (0 to 4)
added to DigoleSerial.cpp :
// Added : output byte on additional output pins on Display Board
void DigoleSerialDisp::digitalOut(uint8_t zz) { //
Print::print("DOUTB");
write(kk);
}

Yes, it is very nice.

In the manual, you can see a text string "osr18", which is a font which was taken from U8glib (Google Code Archive - Long-term storage for Google Code Project Hosting.). The font itself was designd by Alexey Kryukov. In fact, most other fonts seem to be taken from U8glib. In U8glib i tried my very best to give credits and license information to all font designers, but the user manuel of Digole did not mention anything about font licenses.

The user manual also states that the internal fonts are compatible to U8glib font structure. Moreover many graphics commands are identical to U8glib. But i am sure, that Digole completly wrote a new graphics library, because otherwise i think they would have given better credits to U8glib.

But at the end, i am glad that you like the font features and the fonts itself. As it took me a long time to develop the font conversion procedures, another long search to find good fonts and also a good amount of time to document the copyrights.

Oliver (Author of U8glib)

pizzayolo:
(...)
relatively fast
(...)
Font 10 is still extremely readable and crisp.
With this font, up to 6 lines of 25 char/line may be displayed.

(...)
write(kk);
}

A precision, and some corections:

A) typically I introduce 100ms pause after having sent a "clear display" command, and 10 ms after having sent a command to display a line with font 10.
B) There are actually 7 lines of 25 char/lines using font 10
C) This is typo, it is of course write(zz);

olikraus:
Yes, it is very nice.

In the manual, you can see a text string "osr18", which is a font which was taken from U8glib (Google Code Archive - Long-term storage for Google Code Project Hosting.). The font itself was designd by Alexey Kryukov. In fact, most other fonts seem to be taken from U8glib. In U8glib i tried my very best to give credits and license information to all font designers, but the user manuel of Digole did not mention anything about font licenses.

The user manual also states that the internal fonts are compatible to U8glib font structure. Moreover many graphics commands are identical to U8glib. But i am sure, that Digole completly wrote a new graphics library, because otherwise i think they would have given better credits to U8glib.

But at the end, i am glad that you like the font features and the fonts itself. As it took me a long time to develop the font conversion procedures, another long search to find good fonts and also a good amount of time to document the copyrights.

Oliver (Author of U8glib)

General:
It is indeed a pitty that credits have not been given to U8glib, its team, and to Alexey Kryukov.

Technical:
I am using small sized fonts (size 10, that I did not find on the link given); is there a simple way to downsize a U8glib font ? ( I would be interested in font 10 greek and font 10 iso-latin, to use on this OLED display)

I started making 0.96" mono i2c oleds as well a little while ago. At first I purchased them off ebay but the price kept climbing up so i decided to make my own. Schematics and gerber files are all up for grabs if you are interested in making your own. The test code allows to 180 degree rotation and brightness control.

Mike

On the u8glib download page, you can download bdf2u8g font conversion utility. With this utility you can convert a font with greek glyphs (e.g. GNU Unifont - Wikipedia)

See also: Google Code Archive - Long-term storage for Google Code Project Hosting.

Oliver