Bird
Raised Fist0
Arduinoprogramming~5 mins

16x2 LCD with LiquidCrystal library in Arduino

Choose your learning style10 modes available
Introduction

A 16x2 LCD lets you show text on a small screen with 2 lines and 16 characters each. The LiquidCrystal library helps you easily control this screen from your Arduino.

You want to display sensor readings like temperature or humidity.
You want to show messages or instructions on a small device.
You want to debug your Arduino by showing variable values.
You want to create a simple user interface with menus.
You want to display time or status updates in a project.
Syntax
Arduino
LiquidCrystal(rs, enable, d4, d5, d6, d7);
lcd.begin(16, 2);
lcd.print("text");

rs, enable, d4, d5, d6, and d7 are Arduino pins connected to the LCD.

lcd.begin(16, 2) sets the LCD size to 16 columns and 2 rows.

Examples
Basic setup with pins 12, 11, 5, 4, 3, 2 connected to the LCD. Prints "Hello World" on the screen.
Arduino
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 2);
lcd.print("Hello World");
Moves the cursor to the first column of the second line and prints text there.
Arduino
lcd.setCursor(0, 1);
lcd.print("Line 2 text");
Clears the screen before printing a new message.
Arduino
lcd.clear();
lcd.print("New message");
Sample Program

This program sets up the LCD and prints "Hello, Arduino!" on the first line. The screen stays showing this message.

Arduino
#include <LiquidCrystal.h>

// Initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2); // Set up the LCD's number of columns and rows
  lcd.print("Hello, Arduino!"); // Print a message to the LCD
}

void loop() {
  // Nothing to do here
}
OutputSuccess
Important Notes

Make sure your LCD is wired correctly to the Arduino pins you specify.

Use lcd.setCursor(col, row) to move where you print text.

Use lcd.clear() to erase the screen before printing new text.

Summary

The LiquidCrystal library controls 16x2 LCDs easily.

Initialize with pin numbers and call lcd.begin(16, 2).

Use lcd.print() to show text and lcd.setCursor() to move the cursor.

Practice

(1/5)
1. What does the lcd.begin(16, 2) command do in the LiquidCrystal library?
easy
A. It clears the LCD screen.
B. It sets up the LCD screen size to 16 columns and 2 rows.
C. It moves the cursor to the first position.
D. It prints text on the LCD screen.

Solution

  1. Step 1: Understand lcd.begin() function

    The lcd.begin() function initializes the LCD with the number of columns and rows.
  2. Step 2: Apply to given parameters

    Using lcd.begin(16, 2) sets the screen size to 16 columns and 2 rows.
  3. Final Answer:

    It sets up the LCD screen size to 16 columns and 2 rows. -> Option B
  4. Quick Check:

    lcd.begin(16, 2) = sets screen size [OK]
Hint: Remember lcd.begin sets screen size first [OK]
Common Mistakes:
  • Thinking lcd.begin clears the screen
  • Confusing lcd.begin with lcd.print
  • Assuming lcd.begin moves the cursor
2. Which of the following is the correct way to create a LiquidCrystal object for pins 12, 11, 5, 4, 3, 2?
easy
A. LiquidCrystal lcd = (12, 11, 5, 4, 3, 2);
B. LiquidCrystal lcd(2, 3, 4, 5, 11, 12);
C. LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
D. LiquidCrystal lcd(12, 11, 5, 4);

Solution

  1. Step 1: Recall LiquidCrystal constructor syntax

    The constructor requires 6 pins: RS, Enable, D4, D5, D6, D7 in order.
  2. Step 2: Match given pins to correct syntax

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); matches the correct order and number of pins.
  3. Final Answer:

    LiquidCrystal lcd(12, 11, 5, 4, 3, 2); -> Option C
  4. Quick Check:

    Constructor needs 6 pins in order [OK]
Hint: Count pins: constructor needs exactly 6 pins [OK]
Common Mistakes:
  • Using wrong number of pins
  • Wrong pin order
  • Using assignment instead of constructor
3. What will be displayed on the LCD after running this code?
lcd.begin(16, 2);
lcd.setCursor(0, 1);
lcd.print("Hello");
medium
A. Hello on the second row
B. Nothing is displayed
C. Hello on both rows
D. Hello on the first row

Solution

  1. Step 1: Understand lcd.setCursor(0, 1)

    Cursor moves to column 0, row 1 (second row, since rows start at 0).
  2. Step 2: lcd.print("Hello") prints at cursor

    Text "Hello" appears on the second row starting at first column.
  3. Final Answer:

    Hello on the second row -> Option A
  4. Quick Check:

    setCursor(0,1) = second row [OK]
Hint: Rows start at 0, so row 1 is second row [OK]
Common Mistakes:
  • Assuming row 1 is first row
  • Forgetting cursor position before print
  • Expecting text on both rows
4. Identify the error in this code snippet:
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
lcd.begin(16, 2);
lcd.setCursor(1, 2);
lcd.print("Hi");
medium
A. Cursor row 2 is invalid for 2-row LCD
B. lcd.begin() is missing
C. lcd.print() syntax is wrong
D. LiquidCrystal object not created properly

Solution

  1. Step 1: Check lcd.setCursor parameters

    Rows are 0 and 1 for a 2-row LCD; row 2 is out of range.
  2. Step 2: Confirm other code parts

    lcd.begin() is present, object created correctly, and print syntax is correct.
  3. Final Answer:

    Cursor row 2 is invalid for 2-row LCD -> Option A
  4. Quick Check:

    Row index must be 0 or 1 for 16x2 LCD [OK]
Hint: Rows start at 0; max row for 2-row LCD is 1 [OK]
Common Mistakes:
  • Using row 2 instead of 0 or 1
  • Forgetting lcd.begin() call
  • Incorrect object creation syntax
5. You want to display the word "Ready" centered on the first row of a 16x2 LCD. Which code snippet correctly sets the cursor before printing?
hard
A. lcd.setCursor(8, 0); lcd.print("Ready");
B. lcd.setCursor(5, 0); lcd.print("Ready");
C. lcd.setCursor(7, 0); lcd.print("Ready");
D. lcd.setCursor(6, 0); lcd.print("Ready");

Solution

  1. Step 1: Calculate starting position for centering

    LCD width is 16 columns; word length is 5 letters. (16 - 5) / 2 = 5.5, round to 6.
  2. Step 2: Set cursor to column 6 on first row (row 0)

    Use lcd.setCursor(6, 0) to start printing "Ready" centered.
  3. Final Answer:

    lcd.setCursor(6, 0); lcd.print("Ready"); -> Option D
  4. Quick Check:

    (16-5)/2 = 5.5 ≈ 6 for centering [OK]
Hint: Center = (screen width - text length) / 2 rounded [OK]
Common Mistakes:
  • Using wrong column for centering
  • Confusing row numbers
  • Not rounding the position
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard