Comments

12 comments

  • Engineering Support
    Community moderator

    Hi,

    Could you please confirm the display part number you are facing the issue with?

    The part number and the image you provided don't match the product we have.

     

    0
  • ts

    Here's the back. NHD-0216B3Z-FL-GBW

    https://live.staticflickr.com/65535/52663285692_c8ffb83785.jpg 

    0
  • ts

    Hi, is there any update? I posted another picture a week ago.

    0
  • Engineering Support
    Community moderator

    Hi Ts,

    Thank you for following up. It looks like your other post is pending approval so we weren't aware of your post. Could you please the code you are using? Based on the picture R1 and R2 open, you are interfacing in RS232.

     

    0
  • ts

    Hi, thanks for writing back.

    The code is exactly as the one posted on github.

    https://github.com/NewhavenDisplay/Serial-LCD/blob/master/Serial_LCD/Serial_LCD.ino

    0
  • Engineering Support
    Community moderator

    Hi Ts,

    Could you please try the following code:

    /*
      * RS232 Series
     * Pin 1 goes to 5 ~ RX
     * Pin 2 goes to ground
     * Pin 3 goes to 5V
    */

    #define P1 5


    #include <SoftwareSerial.h>
    #define txPin P1

    SoftwareSerial LCD = SoftwareSerial(P1, txPin);

    void clearLCD(){
      LCD.write(0xFE); //command flag
      LCD.write(0x51); //clear command.
      delay(05);
    }

    void command() { //a general function to call the command flag for issuing all other commands 
      LCD.write(0xFE);
    }
    void setup() {
      pinMode(P1, OUTPUT);//  
      pinMode(txPin, OUTPUT);
      delay(20);

      //Start 9600 Baud Rate
        LCD.begin(9600);
        delay(15);

        // Display ON
        LCD.write(0xFE);
        LCD.write(0x41);
        delay(5);

        // Cursor Home
        LCD.write(0xFE);
        LCD.write(0x46);
        delay(5);

        //set Contrast
        LCD.write(0xFE);
        LCD.write(0x52);
        LCD.write(40);
        delay(5);

        //Brightness
        LCD.write(0xFE);
        LCD.write(0x53);
        LCD.write(8);
        delay(5);


        
    }

    void loop() {
        clearLCD();
        for (int i=0;i<80;i++){
          LCD.write(0xFF);     
        }
         delay(3000);
         
        //Display Firmware Version
        LCD.write(0xFE);
        LCD.write(0x70);
        delay(3000);
        
        clearLCD();
        
        LCD.print("XXXXXXXXXXXXXXXXXXXX");
        
        //Change Cursor position to Line 2
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x40);
        
        LCD.print("XXXXXXXXXXXXXXXXXXXX");
        
        //Change Cursor position to Line 3
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x14);
        
        LCD.print("XXXXXXXXXXXXXXXXXXXX");
        
        //Change Cursor position to Line 24
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x54);
        
        LCD.print("XXXXXXXXXXXXXXXXXXXX");
        
        delay(3000);

        clearLCD();
        
        LCD.print("ZZZZZZZZZZZZZZZZZZZZ");
        
        //Change Cursor position to Line 2
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x40);
        
        LCD.print("ZZZZZZZZZZZZZZZZZZZZ");
        
        //Change Cursor position to Line 3
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x14);
        
        LCD.print("ZZZZZZZZZZZZZZZZZZZZ");
        
        //Change Cursor position to Line 24
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x54);
        
        LCD.print("ZZZZZZZZZZZZZZZZZZZZ");
        
        delay(3000);

          LCD.print("HHHHHHHHHHHHHHHHHHHH");
        
        //Change Cursor position to Line 2
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x40);
        
        LCD.print("HHHHHHHHHHHHHHHHHHHH");
        
        //Change Cursor position to Line 3
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x14);
        
        LCD.print("HHHHHHHHHHHHHHHHHHHH");
        
        //Change Cursor position to Line 24
        LCD.write(0xFE);
        LCD.write(0x45);
        LCD.write(0x54);
        
        LCD.print("HHHHHHHHHHHHHHHHHHHH");
        delay(3000);    
        
    }

    0
  • ts

    Hi, appreciate the reply. Just got around to trying the above.

    Do I really have to follow these assignments? My Arduino doesn't have pins in the 20s. 

    /*
      * RS232 Series
     * Pin 1 goes to 22 ~ RX
     * Pin 2 goes to ground
     * Pin 3 goes to 5V
    */
     
    #define P1 22
    #define P2 23
    #define P3 24
     
    Besides, my GND and 5v are not numbered on the Arduino. 
    0
  • Engineering Support
    Community moderator

    Hi Ts,

    You can use GND and 5V directly.  For Pin 1 please go ahead and wire to 5. I updated the code in the previous comment.

    0
  • ts

    Hi, appreciate the reply. 

    So good news and not so good news.

    I found an extra LCD. Connected it.

    That previous LCD is still producing weird characters with the given script while the extra LCD is performing as intended. So is the former LCD toasted? Any idea how so? 

    https://live.staticflickr.com/65535/52686340897_959e2f0e6a_z.jpg

    0
  • Engineering Support
    Community moderator

    Hi Ts,

    I am glad the code is working ! As for the other unit, maybe the the firmware on the IC got corrupted.

    Also, if you are interested on the latest version of this display please check out NHD-0216B3Z-FL-GBW-V3 on our website.

    0
  • ts

    Is there a way to update the firmware?

     

    0
  • Engineering Support
    Community moderator

    Hi Ts,

    Unfortunately there isn't. If you purchase this part through one of our distributors you can initiate a a RMA through them. If you purchased through us, you can contact us at nhtech@newhavendisplay.com for the next steps.

    0

Please sign in to leave a comment.