Member #158122

Member Since: October 24, 2010

Country: United States

  • Trying to figure out how to drive this thing to allow more than 1 of 3 colors.

    You can't just use one current source per segment because then you would get different intensities as the current is split 1, 2 or 3 different ways by the three LED chips per segment. And since they are different forward voltages you'd end up with very poor sharing; the red LED would hog all the current.

    You could use a high-side driver (with current limiting resistor) per segment then switch different potentials on the RGB lines (to try to match the forward drops of the LEDs) but that seems awkward.

    You could mux them so that you are driving one segment at a time, but then you are down to a 1:8 duty cycle which seems like it would be dim.

    Any thoughts?

  • Question - did the SW recently change such that the origin moved from lower left to upper left? Everything printed to newer devices (purchased a few weeks ago) appears in the opposite vertical order than text printed to older devices (purchased about a year ago.)

  • Interesting behavior with an OLED display.

    Newhaven Display NHD-0420DZW-AG5 paired with a serial backpack gives good operation but often swaps lines - instead of lines 1 2 3 4 (character positions 80 C0 94 D4) I get lines 2 1 4 3 with the same addresses. So line 1 is where line 2 should be etc. Resetting the driver uP does not fix this, but enough power cycling and it eventually "gets it right." My setup:

    fputc(0x7C,ext); fputc(0x03,ext); delay_ms(10);     //20 char wide
    fputc(0x7C,ext); fputc(0x05,ext); delay_ms(10);     //4 lines 
    fputc(0xFE,ext); fputc(0b00000001,ext); delay_ms(10);       //clear screen 
    fputc(0xFE,ext); fputc(0b00000010,ext); delay_ms(10);       //Cursor home
    fputc(0xFE,ext); fputc(0b00000110,ext); delay_ms(10);       //No shift
    fputc(0xFE,ext); fputc(0b00001100,ext); delay_ms(10);       //Display on, no cursor, no blink
    fputc(0xFE,ext); fputc(0b00010000,ext); delay_ms(10);       //Move cursor instead of shifting display
    fputc(0xFE,ext); fputc(0b00101000,ext); delay_ms(10);       //Function set - 4 bit 2 line US characters
    fputc(0xFE,ext); fputc(0x80,ext); delay_ms(10);             //Start at location 0 (line 1 first char)
    fputc(0xFE,ext);  fputc(0x06,ext); delay_ms(10);            //Normal left to right printing 
  • Right, but isn't there an 80 byte buffer? For me there is value in being able to get a print-to-LCD completed as quickly as possible, since in many cases I'm doing a software UART and must make the UART simulator atomic.

  • No 115200kbps? I'm disappointed; that's my default for on-board serial comms.

No public wish lists :(