Welcome to Synthiam!

The easiest way to program the most powerful robots. Use technologies by leading industry experts. ARC is a free-to-use robot programming software that makes servo automation, computer vision, autonomous navigation, and artificial intelligence easy.

Get Started
United Kingdom
Asked — Edited
Resolved Resolved by Rich!

Lcd Display Help

Hey guys.

I'm having a little trouble with an LCD display I recently purchased. I have read through some of the posts on the forum to help me get this going, but I need a little more help. I have it connected to D12 going through a 5v regulator. Ground to ground, Vcc to Vcc, and SDA (which I believe to be RX) to a signal pin. It lights up but when I try SendSerial(d12, 9600, "Hello" ) nothing happens. I have also tried a different port and changed baud rates, no change.

Now I believe this is a serial (what I was after) and i2c compatable so it should work. I havn't found a data sheet for it yet but here's a link to it, if it helps. Any ideas what's going wrong, or even if this thing is compatable with the v4? I hope some one can help as I would love to get this working.

Thanks in advance.

User-inserted image

User-inserted image


Upgrade to ARC Pro

Unleash your creativity with the power of easy robot programming using Synthiam ARC Pro

AI Support Bot
Related Content
Logic level conversion isn't needed since @Steve can already communicate to the LCD. Remember the ez-bv4 is 5V tolerant and the LCD likely considers anything above 2.7V as a high signal.

I feel that there is likely a contrast potentiometer at the back of the LCD control board that needs adjusting.
Oops I forgot Steve took photos, looks like there's no potentiometer on the newer LCD he has. The contrast is likely hard set with a resistor on that board. I believe that powering the board with 5V as Rich suggested should help.

If you can communicate with the LCD already pull-ups aren't needed.
United Kingdom
The pot can be added but I believe it only over rides the I2C command to set the contrast.

Communication is working so SCL and SDA are fine, as Jeremie said no pull ups needed and logic level should be OK at 3.3v signals (we know it is, it's working).

I can only think it's the VCC to the LCD that's the problem since the I2C port outputs a 3.3v VCC but the LCD asks for 5V.

I just ripped my LCD from Melvin (don't panic, it wasn't secure and Melvin needs an upgrade soon anyway). If I get chance I'll test my one out as I know it works on 5V perfectly and will see a difference in the 3.3V. If nothing else it will show if Steve's LCD display is faulty or not.
United Kingdom
OK so some playing around and this is what I find...

1. LCD connected to I2C port 3.3v, Ground, SDA and SCL - Unreadable display, backlight is fine but characters are too feint (in fact I couldn't see them at all)

2. LCD connected to I2C Port SDA and SCL, 5v regulator (EZ-Robot one) connected to D23 Vcc and Ground feeding LCD. LCD display works perfectly.

The LCD needs +5V to the Vcc. The EZ-Robot regulator works fine for the blue 4 line display at 80/255 backlight brightness (I didn't test higher) so it should have no problems with the 2 line display.

So, bottom line is, give the LCD display a regulated 5V supply and it should work fine.
United Kingdom
Phew, I was going to say, don't hurt Melvin just to troubleshoot my problem, but if he needs an upgrade then it's all good ;). Thanks for the input though guys. I'll try running it of a digital port with 5v reg a bit later to see if it helps.
United Kingdom
The LCD05 is a 5v device, powering it from 3.3v will cause the problems that Steve G is experiencing. Despite what I said earlier, the contrast pot as Rich says will probably make no difference, a voltage level converter is needed so the LCD05 feeds on 5v.

United Kingdom
So I have left the SDA, SCL and ground leads connected to the i2c port, and ran the Vcc through the regulator to a digital pin. Well the picture below says it all...

User-inserted image

Hurray :D. I had a feeling 3.3v might not be enough which was why I quiried it with Jeremie. Anyway, happy days it's working now :). One little thing though which is something Rich mentioned earlier. While testing this on K-9, his ping sensor servo is making a low level buzzing noise. It's not twitching, but sounds like it wants to. Other servos seem ok but they are well covered so it's difficult to hear anything, where as the ping servo is the only one that's exposed.

Why is that do you think?
United Kingdom
I mentioned before that I had servo twitching when running in serial mode, hence the change to I2C. That was on a V3 board and I've no idea of the cause or the solution since I2C was better all round.

When I was using it in Melvin the neck servos would go rather mad almost causing damage. Again, I don't know the cause, if it's been solved or if the V4 would even suffer with this issue.

But on I2C the issue was not present at all.
United Kingdom
Ok, thanks anyway Rich. Here's a little demo of what I was talking about. Nothing major but I would like to eliminate it if it were possible. I wonder if the guys at EZ HQ might know the cause?

United Kingdom
Does it still do that if you move the servo to a new position and back to default?
Has it only started since sending commands to an LCD?

When I had a similar issue it was on serial only and would only twitch when new commands were sent via sendserial. I don't believe the serial commands were the issue nor the sendserial control since nobody else has mentioned anything similar and the sabertooth uses serial.
United Kingdom
Yeah I still does it after changing the servos position, and it's only started doing this sinse the LCD has been hooked up.
Sorry @Steve when I mentioned you could run the LCD at 3.3V I meant the first LCD you were trying, I had no idea about the second LCD you had.

In terms of the servo jitter, this is usually due to fluctuations in power. The LCD may be causing some voltage ripple on the power line. To remedy this you can try adding a large electrolytic capactitor (maybe in the 220-2200uF range) between VCC and GND on the LCD.
United Kingdom
That sounds right, my Devantech LCD was browning out my EZ-B V3 (well when combined with the 2 neck servos). Tony advised adding a reservoir cap to solve it (I moved everything but the LCD to external power which solved it or hid the problem).

Since the Devantech LCD needs +5V it may pay to grab a 5v regulator and hook it direct to the battery, this may bypass the problem (it may not since it's still drawing from the battery but I know you don't like to solder - side note: I haven't forgotten your TIP circuit I just haven't got around to finding it yet).
United Kingdom

No problem buddy. Probably a bit of a mix up my end too. Anyway all sorted now (pretty much). Thanks for the info about the jitter advice too.:)


I'll give running it straight off the battery a try tomorrow and let you know if it makes any difference. I'm not adverse to a bit of soldering, but your right, it's not one of my favourite activities ;). No problem on the TIP circuit dude. No rush.
United Kingdom
Hey guys.

This is mainly aimed at @Rich or Toymaker as I know you have used these displays. Could one of you be so kind as to give me a quick script example to display the battery voltage on the LCD05 16x2 display please? I tried the following but got a "False" message.


i2cwrite(0,0xc6,0,1,4,12,19,30,230,31,255,+$x = GetVoltage())

I'm a bit stuck as to what else to try. If you could give me an example I would be grateful as this would give me something to work from to hopefully display the time, date ect as well.

United Kingdom
I just had a thought and don't know if it will make any difference. But can this LCD display read the EZ-B voltage while connect via i2c? I can get it to display pre written messages fine and even animate them (with lots of lines of code), but I'm really stuck on displaying live information from the EZ-B. Any help would be appreciated.
United Kingdom


$x = GetVoltage()

I've presumed the 0,1,4,12,19,30,230,31,255 part all leads up to text entry.

It will display anything you ask it to. However it looks like you got a little confused with the variable/GetVoltage part.
United Kingdom
Thanks Rich. That was correct, the code does lead up to text entry. I see where I went wrong now so that will help loads. Thanks again.:)
United Kingdom
I figured out a working script in the end...


i2cwrite(0,0xc6,0,1,4,12,19,30,230,31,255,"v4 battery is at " + $voltage," Volts.")

Thanks to everyone for all of the help that was offered.