Bird
Raised Fist0
Arduinoprogramming~20 mins

LCD cursor positioning in Arduino - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
LCD Cursor Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the cursor position after this code?

Given a 16x2 LCD, what will be the cursor position after running this code?

lcd.setCursor(5, 1);

Assume the cursor starts at (0,0).

Arduino
lcd.setCursor(5, 1);
A(5, 1)
B(1, 5)
C(0, 0)
D(15, 1)
Attempts:
2 left
💡 Hint

The first number is the column (x), the second is the row (y).

❓ Predict Output
intermediate
2:00remaining
What does this code print on the LCD?

What will be displayed on the LCD after this code runs?

lcd.setCursor(0, 0);
lcd.print("Hi");
lcd.setCursor(3, 0);
lcd.print("There");
Arduino
lcd.setCursor(0, 0);
lcd.print("Hi");
lcd.setCursor(3, 0);
lcd.print("There");
AHiThere
BHi There
CHi There
D
Hi
There
Attempts:
2 left
💡 Hint

Think about spaces between printed words and cursor positions.

🔧 Debug
advanced
2:00remaining
Why does this code cause an error?

What error will this code cause and why?

lcd.setCursor(16, 0);
lcd.print("Hello");
Arduino
lcd.setCursor(16, 0);
lcd.print("Hello");
ARuntime error: Cursor position out of bounds
BPrints "Hello" starting at column 0
CNo error, prints "Hello" starting at column 16
DSyntax error: Missing semicolon
Attempts:
2 left
💡 Hint

Remember the LCD columns are 0 to 15 for a 16-column display.

📝 Syntax
advanced
2:00remaining
Which option correctly sets the cursor to the second row, fifth column?

Choose the correct code to set the cursor to column 4, row 1 on a 16x2 LCD.

Alcd.setCursor(5, 2);
Blcd.setCursor(1, 4);
Clcd.setCursor(4, 1);
Dlcd.setCursor(3, 0);
Attempts:
2 left
💡 Hint

Remember columns and rows start counting at 0.

🚀 Application
expert
3:00remaining
How many characters fit on a 20x4 LCD and how to position cursor at last character?

A 20x4 LCD has 20 columns and 4 rows. How many characters fit on the screen? And what is the correct cursor position to print at the last character on the last row?

A84 characters; cursor at (20, 4)
B84 characters; cursor at (19, 4)
C80 characters; cursor at (20, 3)
D80 characters; cursor at (19, 3)
Attempts:
2 left
💡 Hint

Count columns * rows for total characters. Remember zero-based indexing for cursor.

Practice

(1/5)
1. What does the Arduino command lcd.setCursor(0, 1) do on a 16x2 LCD?
easy
A. Clears the LCD screen
B. Moves the cursor to the second column of the first row
C. Moves the cursor to the first column of the second row
D. Prints text at the current cursor position

Solution

  1. Step 1: Understand lcd.setCursor parameters

    The first number is the column (starting at 0), the second is the row (starting at 0).
  2. Step 2: Apply to given command

    lcd.setCursor(0, 1) moves the cursor to column 0 (first column) and row 1 (second row).
  3. Final Answer:

    Moves the cursor to the first column of the second row -> Option C
  4. Quick Check:

    Columns and rows start at zero = first column, second row [OK]
Hint: Remember columns and rows start at zero [OK]
Common Mistakes:
  • Thinking rows start at 1 instead of 0
  • Confusing column and row order
  • Assuming setCursor prints text
2. Which of the following is the correct syntax to set the cursor to the third column and first row on an LCD?
easy
A. lcd.setCursor(3, 1);
B. lcd.setCursor(1, 2);
C. lcd.setCursor(0, 3);
D. lcd.setCursor(2, 0);

Solution

  1. Step 1: Recall zero-based indexing

    Columns and rows start at 0, so third column is 2, first row is 0.
  2. Step 2: Match parameters to correct syntax

    lcd.setCursor(2, 0) sets cursor to third column, first row.
  3. Final Answer:

    lcd.setCursor(2, 0); -> Option D
  4. Quick Check:

    Third column = 2, first row = 0 [OK]
Hint: Count columns and rows from zero [OK]
Common Mistakes:
  • Using 1-based indexing for columns or rows
  • Swapping column and row values
  • Missing semicolon at end
3. What will be the output on a 16x2 LCD after running this code?
lcd.setCursor(5, 0);
lcd.print("Hi");
lcd.setCursor(0, 1);
lcd.print("Bye");
medium
A. First row: 'Hi' starting at first column, second row: 'Bye' starting at first column
B. First row: ' Hi' (5 spaces then Hi), second row: 'Bye' starting at first column
C. First row: 'Hi' starting at sixth column, second row: 'Bye' starting at sixth column
D. First row: ' Hi' (5 spaces then Hi), second row: ' Bye' (5 spaces then Bye)

Solution

  1. Step 1: Analyze first setCursor and print

    lcd.setCursor(5, 0) moves cursor to column 5, row 0. Printing "Hi" starts at column 5 on first row.
  2. Step 2: Analyze second setCursor and print

    lcd.setCursor(0, 1) moves cursor to first column, second row. Printing "Bye" starts there.
  3. Final Answer:

    First row: ' Hi' (5 spaces then Hi), second row: 'Bye' starting at first column -> Option B
  4. Quick Check:

    Cursor moves control print position [OK]
Hint: Cursor sets exact print start position [OK]
Common Mistakes:
  • Assuming print always starts at first column
  • Confusing row and column numbers
  • Ignoring spaces before printed text
4. Identify the error in this Arduino code snippet for LCD cursor positioning:
lcd.setCursor(16, 0);
lcd.print("Hello");
medium
A. Column index 16 is out of range for a 16-column LCD
B. Row index 0 is invalid, should start at 1
C. Missing lcd.begin() before setCursor
D. lcd.print() cannot print strings

Solution

  1. Step 1: Check column index range

    Columns start at 0, so valid columns are 0 to 15 for a 16-column LCD. 16 is out of range.
  2. Step 2: Verify other parts

    Row 0 is valid (rows start at 0). lcd.print() can print strings. lcd.begin() is needed but not shown here, but question focuses on cursor.
  3. Final Answer:

    Column index 16 is out of range for a 16-column LCD -> Option A
  4. Quick Check:

    Column max index = 15 for 16 columns [OK]
Hint: Columns max at size minus one [OK]
Common Mistakes:
  • Using 1-based indexing for columns
  • Assuming lcd.print can't print strings
  • Ignoring lcd.begin() requirement
5. You want to display a 4-letter word centered on the second row of a 20x4 LCD. Which lcd.setCursor() command correctly positions the cursor before printing?
hard
A. lcd.setCursor(8, 1);
B. lcd.setCursor(9, 1);
C. lcd.setCursor(7, 1);
D. lcd.setCursor(10, 1);

Solution

  1. Step 1: Calculate center position for 4 letters on 20 columns

    Center column is 20 / 2 = 10. For 4 letters, start at 10 - (4 / 2) = 8.
  2. Step 2: Set cursor to column 8 on second row

    Row 1 is second row (rows start at 0). So lcd.setCursor(8, 1) is correct.
  3. Final Answer:

    lcd.setCursor(8, 1); -> Option A
  4. Quick Check:

    Center start = half width minus half word length [OK]
Hint: Center = (width/2) - (word length/2) [OK]
Common Mistakes:
  • Using 1-based indexing for rows or columns
  • Starting cursor too far left or right
  • Confusing row and column numbers
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