Introduction: Arduino Nano: I2C 2 X 16 LCD Display With Visuino

Character LCD Displays are a very commonly used for Arduino projects, to display small amounts of textual information. The most common types are the basic directly connected displays, and the ones with I2C adapter. The I2C version is more expensive but needs only 4 wires to connect to Arduino, which makes it very attractive, and easy to use option for Arduino projects.

In this Instructable, I will show you how easy it is to connect such I2C LCD Display to Arduino Nano, and program it with Visuino to display whatever is typed in a Serial Terminal.

In a following Instructable, I will also show you how you can connect LCD Display directly to Arduino without using I2C adapter.

Step 1: Components

  1. One Arduino compatible board (I use Arduino Nano, because I have one, but any other will be just fine)
  2. One I2C 16x2 LCD Display (Back side of the LCD with the I2C adapter showed on Picture 2)
  3. 4 Female-Female jumper wires

Step 2: Connect the LCD Display to Arduino

  1. Connect Ground(Black wire), Power(Red wire), SDA(Green wire), and SCL(Yellow wire) to the LCD Module (Picture 1)
  2. Connect the other end of the Power wire(Red wire) to the 5V power pin of the Arduino board(Picture 2)
  3. Connect the other end of the Ground wire(Black wire) to Ground pin of the Arduino board(Picture 2)
  4. Connect the SDA wire(Green wire) to SDA/Analog pin 4 of the Arduino Nano board(Picture 2)
  5. Connect the SCL wire(Yellow wire) to SCL/Analog pin 5 of the Arduino Nano board(Picture 2)
  6. Picture 3 shows where are the Ground, 5V Power, SDA/Analog pin 4, and SCL/Analog pin 5 pins of the Arduino Nano

Step 3: Start Visuino, and Select the Arduino Board Type

To start programming the Arduino, you will need to have the Arduino IDE installed from here: .

Please be aware that there are some critical bugs in Arduino IDE 1.6.6.

Make sure that you install 1.6.7 or higher, otherwise this Instructable will not work!

The Visuino: also needs to be installed.

  1. Start Visuino as shown in the first picture
  2. Click on the "Tools" button on the Arduino component (Picture 1) in Visuino
  3. When the dialog appears, select Arduino Nano as shown in Picture 2

Step 4: In Visuino: Add LCD Component, and Connect It

  1. Type "lcd" in the Filter box of the Component Toolbox then select the "Liquid Crystal Display (LCD) - I2C" component (Picture 1), and drop it in the design area
  2. Connect the "Out" pin of the LCD component to the to the "In" pin of the I2C channel of the Arduino component (Picture 2)
  3. Connect the "Out" pin of the "Serial[ 0 ]" channel of the Arduino component(Picture 3) to the "In" pin of the LCD component (Picture 4)

Step 5: Generate, Compile, and Upload the Arduino Code

  1. In Visuino, Press F9 or click on the button shown on Picture 1 to generate the Arduino code, and open the Arduino IDE
  2. In the Arduino IDE, click on the Upload button, to compile and upload the code (Picture 2)

Step 6: And Play...

Congratulations! You have completed the project.

Picture 1 shows the connected and powered up project.

If you open Serial Terminal in the Arduino IDE or Visuino, type some text and press Enter, you should see the text appearing on the LCD.

Avoid entering lines of text of more characters than the LCD has per line, as you can overflow its buffers.

On Picture 3 you can see the complete Visuino diagram.

Also attached is the Visuino project, that I created for this Instructable. You can download and open it in Visuino:


bhanumuthyam made it!(author)2017-03-10

I had connected my 20x4 display to arduino and uploaded the code but my display shows nothing it was blank even i gave text also

Repertori made it!(author)2016-03-24

It doesn't work for me. I don't know what the problem is. anny suggestions?

BoianM made it!(author)2016-03-24

Thank you!

Can you try to open the Visuino_I2CIO.cpp file, and change the line:


#include <../Wire/Wire.h>


#include <Wire.h>

then try to compile?

Repertori made it!(author)2016-03-24

It works! Thank a lot, really like the Visuino program, keep up the good work!

BoianM made it!(author)2016-03-24

Thank you! Enjoy :-)

I have made the change, and it will be in the next version.

AdrianW20 made it!(author)2016-01-04
BoianM made it!(author)2016-01-04

Yes, you can. Take a look at this one:

AdrianW20 made it!(author)2016-03-05

thanks so much

KurtRoesener made it!(author)2016-01-07

Thanks for the link post, I really appreciate the hits.

BoianM made it!(author)2016-01-07

You are Welcome! :-) Thank you for the great blog posts!

killeriq made it!(author)2016-03-01

Finally working :)

So as this is my first try wit Arduino i faced few issues:

- I2C Adress 0x27 but a FEW use 0x3F (my case)

- also the contrast circle from back was on low so i wasnt able to see anything

This was very helpful page:

hope u dont mind posting it, thanks!

BoianM made it!(author)2016-03-01

Thank you for posting the notes :-)

I have only this module with the 0x27 address.

The resource you posted is very good!

killeriq made it!(author)2016-03-02

btw the Visuino UI is very similar to LOXONE Config (Home automation), which im using at home. is it just coincidence or do you own it also? :)

BoianM made it!(author)2016-03-02

Maybe LOXONE has seen the OpenWire before ;-)

BoianM made it!(author)2016-03-02

No, I have never seen the LOXONE . Visuino is based on the OpenWire Studio -, and OpenWire Studio has been around for few years, otherwise the core technology was developed by me about 15 years ago ;-) -

killeriq made it!(author)2016-02-29

Hello, ive start this one as my first try with arduino, but im getting:

exit status 1

'Arduino' is not a member of 'Declarations'


Where is the problem? Thanks ;)

BoianM made it!(author)2016-02-29

Thank you! This si a bug in the latest build :-( . I am working to fix it, and will try to make another release with the fix tomorrow.
Thank you for discovering and reporting the bug!

killeriq made it!(author)2016-03-01

thanks for fast mean build of arduino 1.6.7 or Visuino build?

BoianM made it!(author)2016-03-01

Yes, the Visuino build.

Just released 7_7_0_71:

It should fix the bug.

killeriq made it!(author)2016-03-01

Ahh you are the Visuino developer , now it makes sense :D

Thanks! will try

BoianM made it!(author)2016-02-29

For now you should be able to just delete the line and compile. It is an extra line generated by the Visuino :-( . I think I will have the fix tomorrow.

Leonnnc made it!(author)2016-01-14

Saludos quisiera hacer este proyecto pero bueno no cuento con estas placas dime se puede remplazar con un lcd keypad shield??? Gracias

syseng made it!(author)2016-01-03

A good project ,could the temperature humidity be displayed on this lcd . it is all new to me

BoianM made it!(author)2016-01-03

Thank you! I plan to post exactly such project very soon ;-)

DonCesare made it!(author)2015-12-29


BoianM made it!(author)2015-12-29

Thank you! :-) Enjoy!