Go Down

Topic: LCD displays artefacts & malfuncted data (Read 508 times) previous topic - next topic

i3lood

Hi, I bought 2x16 LCD display(arduino compatible) and I wired it like this:

https://botland.com.pl/img/p/1085-3299.jpg

However my connections are a bit different. I don't have pot here, because I had to go to ground level to see anything anyways, and second thing I have one before last pin connected directly to 5V.

When I don't have any code uploaded and turn it on, it shows black boxes on top and nothing on bottom, which is proper I guess. Even if I upload simple arduino code to display 'Hello World' in first line, everything goes well and readable. But the problem comes when I try to use second line too. Text gets malfuncted and it looks like in image 1. On the image 1 arduino is powered by USB cable, and it looks kinda fine if we skip characters disortion, but on image 2 arduino is powered by 9V baterry, that feeds into Vin pin.

I checked circuit with the resistor included, but whole screen just got a little bit darker but still those artefacts.

Cables were just checked too, Im starting thinking my LCD is just broken :/

This is my display:
https://botland.com.pl/wyswietlacze-alfanumeryczne/223-wyswietlacz-lcd-2x16-znakow-zielony.html

floresta

At this point I don't think your display is broken.   

Connecting pin 3 to GND is not a problem although the display might look a bit better if you can implement a potentiometer or perhaps just a small (1000 ohm) resistor between pin 3 and GND.

Your wires are connected to the correct pins otherwise we wouldn't be seeing any text.  The quality of the soldering could possibly be a problem but that is not likely.

You haven't shown your program code.  If everything is bring done in setup() then that isn't the problem.  I suspect that you have placed the code for the second row in loop().  If you move it to setup() then your display will probably operate correctly.

The only other possibility that I can think of right now is a poor quality USB cable causing power problems.  The use of a 9 volt battery will definitely cause problems.

Don

TonyWilk

Hi,
It might just be noise on the supply lines to the display, you could try adding a 0.1uF to 10uF capacitor on the display between GND and Vcc.

Quote
I checked circuit with the resistor included, but whole screen just got a little bit darker but still those artefacts.
You need the resistor to prevent the LED backlight from burning out.

Yours,
 TonyWilk

floresta

My comment about the resistor on pin 15 got lost while I was editing my post. 

Many LCD modules include a current limiting resistor for the backlight on the pc board.  The fact that your vendor shows a external resistor implies that there is not one on your particular module.

Not only does the resistor prevent the LED backlight from burning out it also reduces the load on the power source for your Arduino.

Don

i3lood

I just soldered 1uF capacitor in pararell to VSS and VDD and 4,7k resistor in series with 5V and anode of backlight. Nothing better actually, I attach 2 images. Interesting is, only characters from first line are disorted when there is another character in line below.

Code I uploaded in those photos is straight from examples Liquid Crystal -> Hello World. I just changed pins according to my wiring which is:

rs -> D2
en -> D3
4 -> D12
5 -> D11
6 -> D10
7 -> D8

TonyWilk

Code I uploaded in those photos is straight from examples Liquid Crystal -> Hello World.
Just try adding delay(1000); after the lcd.print and see if anything changes.

Yours,
  TonyWilk


i3lood

Unfortunately, still the same :( I can try soldering 670ohm resistor in series to V0 and 5V.

i3lood

Well, with resistor soldered in, I can't even see anything. I guess its just fault of contrast now. There comes conclusion, I have to ground my V0 pin probably, unless I will not see anything.

TonyWilk

Unfortunately, still the same :(
Ah, if it's still looking odd and shaded when there's a 1 second delay between updates then I think the display's damaged.

Yours,
  TonyWilk

i3lood

Oh damn... I think it may be it... Very bad for me... I take a part in electronics competition on thursday. Well I will have to use only first row and buy another one soon... Thanks for help! Greetings

floresta

Quote
Unfortunately, still the same :( I can try soldering 670ohm resistor in series to V0 and 5V.
As stated in reply #1 the resistor goes between pin 3 and GND.  The display will be blank when pin 3 is pulled high.

Quote
Code I uploaded in those photos is straight from examples Liquid Crystal -> Hello World.
I doubt it, at least not at the beginning of the thread.  The Hello World example code that I am familiar with does not contain the word 'Test' nor does it have any uppercase letters.  Both of these show up in your original photographs.

You really should post a copy of the actual code that you are using.  A photo of your connections would help as well.

Try the following code and let us see what the results are.  Make sure you wait long enough, the second row of characters will not appear for a while after the first row is full.

Code: [Select]
#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
  LiquidCrystal lcd(12,11, 5, 4, 3, 2);        // put your pin numbers here

void setup()
  {
    lcd.begin(20, 4);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
      {
        lcd.print(i);
        delay(100);                            // this delay allows you to observe the addressing sequence
      }
  }


void loop()
  {  
  }



Don

i3lood

Ok, so for now, I added 4k pot to 5V and GND, and its middle outgoing to V0 that is pin 3 of a display. It doesn't solve major problem. Code I used


Code: [Select]

#include <LiquidCrystal.h>

//LiquidCrystal lcd(rs,en,d4,d5,d6,d7);
  LiquidCrystal lcd(2,3, 12, 11, 10, 8);        // put your pin numbers here

void setup()
{
    lcd.begin(16, 2);                          // put your LCD parameters here
    for (char i=47; i<127; i++)                // send 80 consecutive displayable characters to the LCD
      {
        lcd.print(i);
        delay(100);                            // this delay allows you to observe the addressing sequence
      }
}

void loop() {}


Effect shown in attachments. Again, first row is fine, but when second one starts filling...
I pretty much can't show my connections now, because it's already mounted, I decided to use only one row for now, but I don't really think its anything wrong with my soldering or wires, because when I used this LCD on breadboard, it worked as bad as now. I already ordered new one, and will tell you if that was it. I will know if that was display or my connections, because I created kinda plug to display pins, so I won't solder anything except pins on new one.

Greetings

floresta

It looks like the display is probably at fault.

Could you describe the sequence of events?  Normally the first row of characters would appear, one at a time.  Then there would be a period of time with nothing changing.  Finally the second row of characters would appear, one at a time.

During the time that the second row was being displayed did the artifacts appear on the first row, one at a time, as the second row of characters appeared below?

Also, could you start the display on the second row and see what happens?  Just add   lcd.setCursor(0,1);   after the lcd.begin(16,2) statement.

Don


i3lood

So basically I bought a new one, and problems dissapeared.

Go Up