NHD-0420D3Z-FL-GBW-V3 I2C library

Comments

1 comment

  • Ted M.
    NHD Staff

    Hi dql,

    Here is some example code we have that uses the Arduino wire.h

    #include <Wire.h>

    #define   RES   0

    //Pin A4 = Data
    //Pin A5 = Clock

    const unsigned char slave = 0x3C;
    const unsigned char com = 0;
    const unsigned char dat = 0x40;
    unsigned char packet[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

    char const text1[] = ("Newhaven Display");
    char const text2[] = ("LCD Test LN2    ");
    char const text3[] = (" CHARACTER TEST ");
    char const text4[] = ("  LCD  Display  ");
    char const text5[] = ("ABCDEFGHIJKLMOPQ");
    char const text6[] = ("RSTUVWXYZabcdefg");
    char const text7[] = ("hijklmnopqrstuvw");
    char const text8[] = ("<(''<)|| <('')>|");

    const char slave2w = 0x78;
    const char Comsend = 0x00;
    const char Datasend = 0x40;

    void command(unsigned char c){
      packet[0] = com;
      packet[1] = c;
      sendpacket(2);
    }
    void data(unsigned char d){
      packet[0] = com;
      packet[1] = d;
      sendpacket(2);
    }
    void sendpacket(unsigned char x){
      unsigned char ix;
      Wire.beginTransmission(slave2w);
      for(ix = 0; ix < x; ix++){
        Wire.write(packet[ix]);
      }
      Wire.endTransmission();
    }
    void output()
    {
      int i;

            command(0x01);
            for(i=0;i<16;i++){
              data(0x1F);
            }
            command(0xA0);
            for(i=0;i<16;i++){
              data(0x1F);
            }

    /*
      command(0x01);
      for (i=0;i<16;i++){
        data(text1[i]);
      }
     
      command(0xA0);
      for (i=0;i<16;i++){
        data(text2[i]);
      }

      command(0xC0);
      for (i=0;i<16;i++){
        data(text3[i]);
      }
     
      command(0xE0);
      for (i=0;i<16;i++){
        data(text4[i]);
      }
    */
    }
    void setup() {

      pinMode(RES, OUTPUT);
      pinMode(2, OUTPUT);
      digitalWrite(2, LOW);
      digitalWrite(RES, HIGH);
      delay(10);
      digitalWrite(RES, LOW);
      delay(100);
      digitalWrite(RES, HIGH);

      Wire.begin();
      delay(10);
     
      command(0x2A);  //function set (extended command set)
      command(0x71);  //function selection A, disable internal Vdd regualtor
      data(0x5c);
      command(0x28);  //function set (fundamental command set)
      command(0x08);  //display off, cursor off, blink off
      command(0x2A);  //function set (extended command set)
      command(0x79);  //OLED command set enabled
      command(0xD5);  //set display clock divide ratio/oscillator frequency
      command(0x70);  //set display clock divide ratio/oscillator frequency
      command(0x78);  //OLED command set disabled
      command(0x08);  //extended function set (2-lines)
      command(0x06);  //COM SEG direction
      command(0x72);  //function selection B, disable internal Vdd regualtor
      data(0x00);     //ROM CGRAM selection
      command(0x2A);  //function set (extended command set)
      command(0x79);  //OLED command set enabled
      command(0xDA);  //set SEG pins hardware configuration
      command(0x10);  //set SEG pins hardware configuration
      command(0xDC);  //function selection C
      command(0x00);  //function selection C
      command(0x81);  //set contrast control
      command(0x7F);  //set contrast control
      command(0xD9);  //set phase length
      command(0xF1);  //set phase length
      command(0xDB);  //set VCOMH deselect level
      command(0x40);  //set VCOMH deselect level
      command(0x78);  //OLED command set disabled
      command(0x28);  //function set (fundamental command set)
      command(0x01);  //clear display
      command(0x80);  //set DDRAM address to 0x00
      command(0x0C);  //display ON
      delay(100);
    }

    void loop() {
      for(int i = 0x21; i < (0x21+16); i++){
        data(i);
      }
        delay(1000);
     

    }

    Best Regards,

    0

Please sign in to leave a comment.