• Michael_L
    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: https://newhavendisplay.com/content/app_notes/OLED_2_7_12864.txt 

    Link to display's datasheet: https://newhavendisplay.com/content/specs/NHD-2.7-12864UMY3.pdf 

    Link to controller's datasheet (for more details): https://newhavendisplay.com/content/app_notes/SSD1325.pdf 
  • EK701
    Thank you, that helps!

    The U8glib does the following (https://code.google.com/p/u8glib/source/browse/csrc/u8g_dev_ssd1325_nhd27oled_gr.c?name=v0.06):

    /* http://www.newhavendisplay.com/app_notes/OLED_2_7_12864.txt */
    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!
    « Last Edit: June 05, 2014, 11:02:45 PM by EK701 »
  • HybridNz
    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.

    « Last Edit: July 07, 2014, 01:43:45 AM by HybridNz »
  • SLTom992

    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.

  • Michael_L

    Can you clarify which programs and what delays you are referring to?  Certain delays are needed for different things.  Some examples: a hardware reset has a timing requirement for how long the line needs to be low, a clear display command may have a longer execution time than most others, the enable pin has a minimum pulse width requirement.
    Of course, this is all dependent on the micro you are using.


Please sign in to leave a comment.