LCD Scroll

Hi There,

I have recently purchased a 16x2 LCD screen for a project I am working on, however I am wondering if it is possible to have the text to scroll to the right like a loop. I also want it to display text that scrolls to the next set of text after a certain delay

So it looks like the following:

Text1 - Scrolls - Delay 50 Text2 - Scrolls - Delay 50 Text3 - Scrolls - Delay 50 - Text1 - Scrolls -Delay - Text2 ...etc

So effectively once text3 has been shown the next text that is shown after the delay is text1 again and this loops constantly.

I don't want any button inputs I just want it to scroll automatically if this is even possible.


You have to make the text scroll in software, the screen isn't able to do it on its own. But you don't need to redraw the text constantly (although it works) you can just fill the screen memory and change the address at which the display starts. There are scrollDisplayLeft() and scrollDisplayRight() functions in the liquidCrystal library, you should be able to do what you want with these.

I do have it scrolling text but how would you add a delay to each set of text, and get it to scroll accordingly through each set.

I don't want any button inputs I just want it to scroll automatically if this is even possible.

This is entirely possible, but how to accomplish what you want to do and how much will have to be done by software depends on the length of your messages and how you want to deal with the second display line.

The controller itself can hold 80 characters of which 32 will be displayed at any given time. You can find more about the relationship between the controller memory and the display if you follow the [u]LCD Addressing[/u] link at

The controller handles which of the 80 characters to actually display by means of some display shift instructions. The Arduino implements these instructions by means of the functions mentioned in Reply #1.

So - give us some more information about the message length and how you want to deal with the second line of the display.


Ok so the messages are as follows:

Welcome to the architecture of a CPU

Press play to start the VoiceOver

Please select a button from the register

As you can see the register holds a value

This value is transferred to holding block a

Please select another register

This value is transferred to holding block n

When holding blocks a and b contain values

The values are added together in the ALU (Arithmetic Logical Unit)

This value is then transferred back to the registers via the tube highlighted and stored.

The text that is too long needs to go on two lines!

Thanks for you advice.

Have you looked at the information in the link that I provided earlier?

Unless there are some size constraints I think you would be much better off with a different display.

If you really want to use a character mode display then you should consider a 40x2 device so you don't have to deal with 'invisible' characters.

A graphical LCD might be an even better choice.


Thanks for the info don, I have checked out the link provided however the project is almost complete so changing any components isn't really an option is there a solution with the current LCD?