Zbotic Logo Zbotic Logo
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

  • Shop
  • About Us
  • Contact Us
  • Reseller
  • Blogs
020 69134444
1800 209 0998
[email protected]
Help Desk
Facebook Twitter Instagram Linkedin YouTube
Zbotic Logo Zbotic Logo
0 0

View Wishlist Add all to cart

0 0
0 Shopping Cart
Shopping cart (0)
Subtotal: ₹0.00

View cartCheckout

All departments
  • 3D Print Service
  • 3D Printer
  • Batteries & Chargers
  • Development Boards
  • Drone Parts
  • EBike parts
  • Sensor Modules
  • Electronic Components
  • Electronic Modules
  • IoT and Wireless
  • Mechanical Parts and Workbench Tools
  • Motors & Drivers & Pumps & Actuators
  • DIY and Robot Kits
  • Show more
  • Home
  • Shop
  • Sale
  • 3D Print Service
  • PCB Service
  • B2B
  • Blogs
  • Contact Us
Return to previous page
Home Display Modules & Screens

LCD Menu System: Multi-Level Navigation with Encoder

LCD Menu System: Multi-Level Navigation with Encoder

April 1, 2026 /Posted by / 0
Table of Contents

  1. Why Build a Menu System
  2. Hardware: LCD + Rotary Encoder
  3. Menu Architecture Design
  4. Implementing the Menu Engine
  5. Sub-Menus and Settings Pages
  6. Saving Settings to EEPROM
  7. Making the Menu Library Reusable
  8. Recommended LCD and Encoder Modules

A well-designed menu system transforms a simple microcontroller project into a professional, user-friendly device. Using an LCD display with a rotary encoder, you can build intuitive multi-level navigation for settings, data display, and device control. This guide covers designing and coding a complete, reusable menu engine for Arduino.

Why Build a Menu System

  • Almost every embedded product has a menu (thermostats, 3D printers, oscilloscopes)
  • A menu makes your project configurable without reprogramming
  • Users can adjust settings, view data, and trigger actions
  • One encoder replaces multiple buttons for a cleaner interface

Hardware: LCD + Rotary Encoder

  • 16×2 or 20×4 LCD with I2C: Proven, affordable, easy to read
  • Rotary encoder with push button: Rotate to navigate, press to select/enter
  • Only 4 wires for LCD (I2C) + 3 wires for encoder = 7 total GPIO pins

Menu Architecture Design

Structure your menu as a tree:

Main Menu
  |- Settings
  |    |- Brightness [0-100]
  |    |- Contrast [0-100]
  |    |- Language [EN/HI]
  |- Sensors
  |    |- Temperature
  |    |- Humidity
  |- System
  |    |- Reset
  |    |- About
  |    |- WiFi Config

Each menu item can be a sub-menu (opens more items), a value editor (adjust a number), or an action (execute a function).

Implementing the Menu Engine

struct MenuItem {
  const char* label;
  MenuItem* subMenu;
  int subMenuSize;
  void (*action)();
  int* value;
  int minVal, maxVal;
};

void navigateMenu(MenuItem* menu, int size) {
  int selection = 0;
  while(true) {
    lcd.clear();
    lcd.setCursor(0,0); lcd.print(">");
    lcd.print(menu[selection].label);
    if(selection+1  0 && selection < size-1) selection++;
    if(dir  0) selection--;
    if(buttonPressed()) {
      if(menu[selection].subMenu)
        navigateMenu(menu[selection].subMenu, menu[selection].subMenuSize);
      else if(menu[selection].action)
        menu[selection].action();
    }
  }
}

Sub-Menus and Settings Pages

Sub-menus open when the user presses the encoder on a menu item that has children. Value editing allows the user to rotate the encoder to adjust a numeric value (brightness, threshold, timer duration) and press to confirm.

Saving Settings to EEPROM

Save user settings to Arduino EEPROM so they persist across power cycles:

#include <EEPROM.h>
void saveSettings() {
  EEPROM.put(0, brightness);
  EEPROM.put(4, contrast);
}
void loadSettings() {
  EEPROM.get(0, brightness);
  EEPROM.get(4, contrast);
}

Making the Menu Library Reusable

Package your menu code as a reusable class that can be dropped into any project. Define menu structures as arrays and pass them to the menu engine. This way, you write the menu engine once and reuse it across all your projects with different menu structures.

Recommended LCD and Encoder Modules

LCD1602 I2C
Rs.140 | Buy on Zbotic.in →
LCD2004 I2C
Rs.234 | Buy on Zbotic.in →
0.96″ I2C OLED Blue
Rs.165 | Buy on Zbotic.in →

Frequently Asked Questions

Can this menu system work with OLED displays?

Yes. Replace the LCD print commands with OLED drawing functions. The menu logic is identical — only the display output changes.

How many menu levels can I have?

As many as Arduino’s RAM allows. In practice, 3-4 levels deep is sufficient for most projects. Deeper menus become confusing for users.

Is a rotary encoder better than buttons?

For menus, yes. One encoder replaces 3 buttons (up, down, select) and provides smooth, fast scrolling through long lists.

Shop Display Modules at Zbotic.in

India’s trusted source for OLED, LCD, TFT, LED matrices, and more. Fast shipping across India.

Browse All Display Modules →

Tags: Arduino, display, Display Modules, lcd, menu system, rotary encoder
Share Post
  • Facebook
  • Linkedin
  • Whatsapp
LED Running Text: Single Line ...
blog led running text single line scrolling marquee 614960
blog display brightness control ambient light auto adjust 614964
Display Brightness Control: Am...

Related posts

Svg%3E
Read more

Multi-Display Sync: Run Same Content on Multiple Screens

April 1, 2026 0
Table of Contents When You Need Multiple Synchronised Displays Communication Protocols for Display Sync I2C Multi-Display Architecture SPI Daisy-Chain Approach... Continue reading
Svg%3E
Read more

Display Brightness Control: Ambient Light Auto-Adjust

April 1, 2026 0
Table of Contents Why Auto-Brightness Matters Light Sensors: LDR, BH1750, TSL2561 PWM Brightness Control Basics Implementing Auto-Brightness for OLED Auto-Brightness... Continue reading
Svg%3E
Read more

LED Running Text: Single Line Scrolling Marquee

April 1, 2026 0
Table of Contents Applications for Scrolling Marquee Displays Hardware Options: Dot Matrix vs LED Panel Building with MAX7219 Cascaded Modules... Continue reading
Svg%3E
Read more

Prayer Time Display: Mosque and Temple Timer India

April 1, 2026 0
Table of Contents The Need for Automated Prayer Time Displays Calculating Prayer Times Programmatically Display Options for Places of Worship... Continue reading
Svg%3E
Read more

Bus Schedule Display: Real-Time Arrival Board

April 1, 2026 0
Table of Contents Smart Transit Displays in Indian Cities Display Technology for Bus Stops Data Sources for Bus Arrival Times... Continue reading

Add comment Cancel reply

Your email address will not be published. Required fields are marked

Facebook Twitter Instagram Pinterest Linkedin Youtube

Get the latest deals and more.

Download on Google Play Download on the App Store

Call us: 020 69134444 / 1800 209 0998

Monday - Saturday 09:30 AM - 06:00 PM
For Technical Supports Email: [email protected]
For Sales / Enquiries Email: [email protected]

  • My Account

    • Cart

    • Wishlist

    • Checkout

    • My Orders

    • Track Order

    • My Account

  • Information

    • FAQs

    • Blogs

    • Career

    • About Us

    • Contact Us

    • Payment Options

  • Policies

    • Privacy Policy

    • Terms & Conditions

    • GST Input Tax Credit

    • Shipping Return Policy

    • E-Waste Collection Points

    • Our Sitemap

© Zbotic.in is registered trademark of Moxie Supply Pvt Ltd – All Rights Reserved
Login
Use Phone Number
Use Email Address
Not a member yet? Register Now
Reset Password
Use Phone Number
Use Email Address
Register
Already a member? Login Now