Newhaven Products > OLEDs


(1/2) > >>

I'm trying to use the NHD-2.7-12864UMY3 with an Arduino Micro and am having difficulties with the electrical interface.  I am unable to get the display to turn on.  If I provide +3.3VDC and GND to the display, with nothing else connected, should the display light up?  I checked the pins on the PCB on the display and I see +3.3VDC on what I think are the appropriate pins.  Do you have some troubleshooting tips, test points, etc. that would help me out?

A detailed schematic and Arduino code is available here:


The display will not show anything unless it's initialized and has data written to it.  You will not see anything turn on with only VDD and GND connected.

From looking at your code, it seems you are using some sort of library for the display's functions.  I don't know if that library works with our displays, as I do not know what controller it was written for, nor can I see any of the low level functions.  I would suggest using our available example code for the 2.7" OLED.  The code uses a parallel interface, but if you must use serial, you can still use the same initialization but you would have to follow the serial interface timing requirements and protocol as shown in the datasheet.

Link to example code:

Link to display's datasheet:

Link to controller's datasheet (for more details):

Thank you, that helps!

The U8glib does the following (

/* */
u8g_pgm_uint8_t u8g_dev_ssd1325_2bit_nhd_27_12864ucy3_init_seq[] = {
  U8G_ESC_DLY(10),              /* delay 10 ms */
  U8G_ESC_CS(0),                 /* disable chip */
  U8G_ESC_ADR(0),               /* instruction mode */
  U8G_ESC_RST(1),               /* do reset low pulse with (1*16)+2 milliseconds */
  U8G_ESC_CS(1),                /* enable chip */
  0x0ae,                                /* display off, sleep mode */
  0x0b3, 0x091,                    /* set display clock divide ratio/oscillator frequency (set clock as 135 frames/sec) */
  0x0a8, 0x03f,                     /* multiplex ratio: 0x03f * 1/64 duty */
  0x0a2, 0x04c,                     /* display offset, shift mapping ram counter */
  0x0a1, 0x000,                     /* display start line */
  0x0ad, 0x002,                     /* master configuration: disable embedded DC-DC, enable internal VCOMH */
  0x0a0, 0x056,                     /* remap configuration, vertical address increment, enable nibble remap (upper nibble is left) */
  0x086,                                /* full current range (0x084, 0x085, 0x086) */
  0x0b8,                                /* set gray scale table */
      //0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x065, 0x076,
      0x01, 0x011, 0x022, 0x032, 0x043, 0x054, 0x077, 0x077,            // 4L mode uses 0, 2, 4, 7
  0x081, 0x070,                    /* contrast, brightness, 0..128, Newhaven: 0x040 */
  0x0b2, 0x051,                    /* frame frequency (row period) */
  0x0b1, 0x055,                    /* phase length */
  0x0bc, 0x010,                    /* pre-charge voltage level */
  0x0b4, 0x002,                    /* set pre-charge compensation level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */
  0x0b0, 0x028,                    /* enable pre-charge compensation (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */
  0x0be, 0x01c,                     /* VCOMH voltage */
  0x0bf, 0x002|0x00d,           /* VSL voltage level (not documented in the SDD1325 datasheet, but used in the NHD init seq.) */
  0x0a5,                                 /* all pixel on */
  0x0af,                                  /* display on */
  U8G_ESC_DLY(100),             /* delay 100 ms */
  U8G_ESC_DLY(100),             /* delay 100 ms */
  0x0a4,                                 /* normal display mode */
  U8G_ESC_CS(0),             /* disable chip */
  U8G_ESC_END                /* end of sequence */

So, it looks like the software is doing the right thing, which makes me think I have a hardware problem still with the connection to the Arduino Micro.

Thanks again for the pointers!

U8Glib works just fine ... I have several NHD oleds running on u8glib.

Check your ground pins are tied properly and back the micro and you signal lines are on the correct pins.
Unfortunately electrically the NHDs flicker or get banding on the screen. I suspect because of voltage control / supply issues. Seem all of the discussion around that got deleted in the forum upgrade on here which is a shame because it never really got answered / solved.

Would post this on the Arduino forums but its full of grumpy old men and argumentative moderators.

Can someone tell me why there are all these delays in these programs? When I look at the clock speed of the display controller compared to the clock speed of most of the uP's controlling them it looks to me as if the display is much faster. So why would a delay be inserted all over these operations? Not to mention if you have a display added onto a uP doing other work you don't have the time to be waiting for delays to occur and you sure don't have time to put yet more instructions into the interrupt routines and slow them up.


[0] Message Index

[#] Next page

Go to full version