loading

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. I already posted Instructable on how to use the I2C version. I also promised that I will post Instructable on how to directly connect the LCD Display.

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

Please note that the annotation on some of the pictures in this Instructable will work correctly on some browsers only after you click on the image to expand it.

Please make sure you click on the image to see the annotation showing the correct spot on the image!

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 16x2 LCD Display
  3. One 10K Potentiometer
  4. One 220 ohmResistor
  5. 8 Male-Female jumper wires
  6. 7 short Male-Male jumper wires

Step 2: Connect VSS, VDD, RS, RW and E Pins of the LCD

  1. Place the LCD on the Breadboard
  2. Connect with jumper wire the "VSS" pin of the LCD to Ground of the power bus of the Breadboard(Black wire)(Picture 1)
  3. Connect with jumper wire the "VDD" pin of the LCD to Power of the power bus of the Breadboard(Red wire)(Picture 1)
  4. Connect the Male end of one of the Male-Female wires(White wire) to the "RS" pin of the LCD (Picture 2)
  5. Connect with jumper wire the "RW" pin of the LCD to Ground of the power bus of the Breadboard (Black wire)(Picture 3)
  6. Connect the Male end of one of the Male-Female (Brown wire) wires to the "E" pin of the LCD (Picture 4)

Step 3: Connect D4, D5, D6, D7, a and K Pins of the LCD

  1. Connect the male ends of 4 Male-Female jumper wires to the D4(Yellow wire), D5(Green wire), D6(Blue wire), and D7(Purple wire) pins of the LCD (Picture 1)
  2. Connect the 220 ohmresistor between the "A" pin of the LCD and the Power of the power bus of the Breadboard (Picture 2)
  3. Connect with jumper wire the "K" pin of the LCD to Ground of the power bus of the Breadboard (Black wire)(Picture 3)

Step 4: Connect the Potentiometer to the V0 Pin of the LCD

  1. Place the Potentiometer on the Breadboard (Picture 1)
  2. Connect the middle(wiper) pin of the potentiometer to the "V0" pin of the LCD (Yellow wire) (Picture 2)
  3. Connect one of the end pins of the potentiometer to the Ground of the Power Bus of the Breadboard (Black wire) (Picture 3)
  4. Connect other end pin of the potentiometer to the Power of the Power Bus of the Breadboard (Red wire) (Picture 3)

Step 5: Connect Power to the Breadboard

  1. Connect the Male end of a Male-Female jumper wire(Red wire) to the Power of the Power bus of the Breadboard (Picture 1)
  2. Connect the Male end of a Male-Female jumper wire(Black wire) to the Ground of the Power bus of the Breadboard (Picture 1)
  3. Picture 2 shows the completely connected Breadboard

Step 6: Connect to Arduino

  1. Connect the other end of the Ground wire(Black wire) to Ground pin of the Arduino board (Picture 1)
  2. Connect the other end of the Power wire(Red wire) to the 5V power pin of the Arduino board (Picture 1)
  3. Connect the other end of the "RS" wire(White wire) to the Digital 2 pin of the Arduino board (Picture 2)
  4. Connect the other end of the "E" wire(Brown wire) to the Digital 3 pin of the Arduino board (Picture 2)
  5. Connect the other end of the "D4" wire(Yellow wire) to the Digital 4 pin of the Arduino board (Picture 3)
  6. Connect the other end of the "D5" wire(Green wire) to the Digital 5 pin of the Arduino board (Picture 3)
  7. Connect the other end of the "D6" wire(Blue wire) to the Digital 6 pin of the Arduino board (Picture 3)
  8. Connect the other end of the "D7" wire(Purple wire) to the Digital 7 pin of the Arduino board (Picture 3)
  9. Picture 4 shows the all the Arduino and Breadboard connections

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

To start programming the Arduino, you will need to have the Arduino IDE installed from here: http://www.arduino.cc/.

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

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

The Visuino: https://www.visuino.com 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 8: 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)" component (Picture 1), and drop it in the design area
  2. Connect the "RegisterSelect" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 2 ]" channel of the Arduino component (Picture 2)
  3. Connect the "Enable" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 3 ]" channel of the Arduino component (Picture 3)
  4. Connect the "Data0" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 4 ]" channel of the Arduino component (Picture 4)
  5. Connect the "Data1" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 5 ]" channel of the Arduino component (Picture 4)
  6. Connect the "Data2" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 6 ]" channel of the Arduino component (Picture 4)
  7. Connect the "Data3" output pin of the LiquidCrystalDisplay1 component to the "Digital" input pin of the "Digital[ 7 ]" channel of the Arduino component (Picture 4)
  8. Connect the "Out" pin of the Serial[ 0 ] channel of the Arduino component to the "In" pin of the LiquidCrystalDisplay1 component (Picture 5)

Step 9: 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 10: 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.

You may need to adjust the potentiometer to get clearly displayed text.

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: https://www.visuino.com

<p>hello,</p><p>I didn't realize this instructable was for Visuino before I started breadboarding it and I almost had it completed before realizing there wasn't a traditional code sample here I could use to complete it because I'm not into Visuino and never heard of it. I finished wiring my LCD to my nano using the circuit here but I didn't have the same color wires as BoianM had used so it was a little confusing for me scrolling up and down this page to get the wires wired correctly so I decided to post this chart (below the LCD code) I made up for others to use to make it easier. And also I got some code up and running and it works!! and so I thought I'd post it as well for guys like me that might be looking for traditional arduino code. The code is by David A. Mellis and all I did was change Davids LiquidCrystal to this one &quot;LiquidCrystal lcd(2, 3, 4, 5, 6, 7);&quot;.</p><p>Thanks for posting this instructable as it did help me lots...</p><p>/*<br> LiquidCrystal Library - Hello World<br> This code is for an Arduino Nano<br><br> Demonstrates the use a 16x2 LCD display. The LiquidCrystal<br> library works with all LCD displays that are compatible with the<br> Hitachi HD44780 driver. There are many of them out there, and you<br> can usually tell them by the 16-pin interface.<br><br> This sketch prints &quot;Hello World!&quot; to the LCD<br> and shows the time.<br><br>The circuit:<br>LCD Pins Nano Pins<br>------------- --------------<br>Pin 1) VSS Connect to - 0 volts (ground) <br>Pin 2) VDD Connect to + 5 volts <br>Pin 3) V0 Connect to center of 10K pot</p><p>Pin 4) RS Connect to Pin D2<br>Pin 5) RW Connect to - 0 volts (ground)<br>Pin 6) E Connect to Pin D3 <br>Pin 7) D0 Not Used N/A<br>Pin 8) D1 Not Used N/A<br>Pin 9) D2 Not Used N/A <br>Pin 10) D3 Not Used N/A <br>Pin 11) D4 Connect to Pin D4 <br>Pin 12) D5 Connect to Pin D5<br>Pin 13) D6 Connect to Pin D6<br>Pin 14) D7 Connect to Pin D7 <br>Pin 15) A Connect to 220 ohm resistor to +5 volts<br>Pin 16) K Connect to - 0 volts (ground) <br><br> Library originally added 18 Apr 2008<br> by David A. Mellis<br> library modified 5 Jul 2009<br> by Limor Fried (http://www.ladyada.net)<br> example added 9 Jul 2009<br> by Tom Igoe<br> modified 22 Nov 2010<br> by Tom Igoe<br><br> This example code is in the public domain.<br><br> <a href="http://www.arduino.cc/en/Tutorial/LiquidCrystal" rel="nofollow"> http://www.arduino.cc/en/Tutorial/LiquidCrystal</a><br> */<br><br>// include the library code:<br>#include &lt;LiquidCrystal.h&gt;<br><br>// initialize the library with the numbers of the interface pins<br>LiquidCrystal lcd(2, 3, 4, 5, 6, 7);<br><br>void setup() {<br> // set up the LCD's number of columns and rows:<br> lcd.begin(16, 2);<br> // Print a message to the LCD.<br> lcd.print(&quot;hello, world!&quot;);<br>}<br><br>void loop() {<br> // set the cursor to column 0, line 1<br> // (note: line 1 is the second row, since counting begins with 0):<br> lcd.setCursor(0, 1);<br> // print the number of seconds since reset:<br> lcd.print(millis() / 1000);<br>}</p><br><p>LCD Pins Nano Pins<br>------------- --------------<br>Pin 1) VSS Connect to - 0 volts (ground) <br>Pin 2) VDD Connect to + 5 volts <br>Pin 3) V0 Connect to center of 10K pot, other connections to -(ground)&amp;+5v <br>Pin 4) RS Connect to Pin D2<br>Pin 5) RW Connect to - 0 volts (ground)<br>Pin 6) E Connect to Pin D3 <br>Pin 7) D0 Not Used N/A<br>Pin 8) D1 Not Used N/A<br>Pin 9) D2 Not Used N/A <br>Pin 10) D3 Not Used N/A <br>Pin 11) D4 Connect to Pin D4 <br>Pin 12) D5 Connect to Pin D5<br>Pin 13) D6 Connect to Pin D6<br>Pin 14) D7 Connect to Pin D7 <br>Pin 15) A Connect to 220 ohm resistor to +5 volts<br>Pin 16) K Connect to - 0 volts (ground)</p><p>This is what we use for the above wiring.<br>LiquidCrystal lcd(2, 3, 4, 5, 6, 7);</p>
<p>Hi, your post was quite useful for me to connect a LCD display for the 1st time. Thank you.</p><p>It looks that I have a weird display, I had to connect pin 16 to 5V with a resistor (it doesn't work without one) and pin 15 to 0V in order go get the backlight to shine.</p>
<p>I'm just wiring up a nano to an LCD and whilst your comment is very helpful, Pin 15 does not have 220 ohms on it. Just connect to +5v.</p>
<p>Yes your absolutely right, I also ended up wiring mine directly to +5 vdc and it works just fine. I did find a schematics connecting an Lcd to an arduino Uno and it shows pin 15 wired to a 220 ohm pull up resistor. </p><p><a href="https://www.arduino.cc/en/Tutorial/HelloWorld?from=Tutorial.LiquidCrystal" rel="nofollow">https://www.arduino.cc/en/Tutorial/HelloWorld?from...</a></p><p>Thanks</p><p>jessey</p>
<p>Cool! :-) You should try it also with Visuino too since you have it already connected ;-)</p>
<p>Plz hellp :/</p><p>Sketch uses 11,250 bytes (78%) of program storage space. Maximum is 14,336 bytes.</p><p>Global variables use 1,102 bytes (107%) of dynamic memory, leaving -78 bytes for local variables. Maximum is 1,024 bytes.</p><p>processing.app.debug.RunnerException: Not enough memory; see <a href="http://www.arduino.cc/en/Guide/Troubleshooting#size" rel="nofollow"> http://www.arduino.cc/en/Guide/Troubleshooting#si...</a> for tips on reducing your footprint.</p><p>at cc.arduino.Compiler.size(Compiler.java:319)</p><p>at cc.arduino.Compiler.build(Compiler.java:156)</p><p>at processing.app.Sketch.build(Sketch.java:1111)</p><p>at processing.app.Sketch.build(Sketch.java:1081)</p><p>at processing.app.Editor$BuildHandler.run(Editor.java:1962)</p><p>at java.lang.Thread.run(Thread.java:745)</p><p>Not enough memory; see <a href="http://www.arduino.cc/en/Guide/Troubleshooting#size" rel="nofollow"> http://www.arduino.cc/en/Guide/Troubleshooting#si...</a> for tips on reducing your footprint.</p>
<p>Thank you!</p><p>What board you use ? I tested with nano:</p><p>Sketch uses 10,776 bytes (35%) of program storage space. Maximum is 30,720 bytes.</p><p>Global variables use 1,127 bytes (55%) of dynamic memory, leaving 921 bytes for local variables. Maximum is 2,048 bytes.</p><p>It works perfectly well.</p>
<p>Hei, thank you for replying.</p><p>Im ussing realy cheap arduin nano :MINI USB Nano V3.0 ATmega328P CH340G 5V 16M Micro-controller board Arduino</p>
<p>Probably not enough memory in it for this then :-( . The Nonos I use are also cheap low end. I got them for ~$2 each</p>
<p>Tahnkyou for replying agen :D</p><p>Next time i will buy litle bit more expensiv </p>
Thanks
<p>Nice One, Boian!!</p>
<p>Thank you! :-) Cool! You really are going for all of them :-D</p>

About This Instructable

28,442views

111favorites

License:

More by BoianM:Program Arduino UNO With Visuino to Draw on ILI9341 TFT Touchscreen Display Shield With Pen Assemble Kuman Wi-Fi Robot With Camera and Manipulator Arduino and Visuino: Long Distance Remote Light Sensor With RFM95W/RFM98W Makerfabs LoRa Shields  
Add instructable to: