Skip to content

Test an accessible OLED menu

Change contrast, text size, sound, and brightness in an ESP32 menu and compare each stored setting with its visible or audible effect.

UX Uma: I want you to test what each preference actually changes and record where the visible result falls short of its label., your practice guide

UX Uma: I want you to test what each preference actually changes and record where the visible result falls short of its label.
Predict the reading, then compare it with the measurement.

Wokwi ESP32

Third party Tool

Change contrast, text size, sound, and brightness in an ESP32 menu and compare each stored setting with its visible or audible effect.

Tier 1 · Web · No account

Version tested: Compiled and booted by the Wokwi gate (ESP32 Arduino core 3.3.11); captured in the Wokwi web editor on 2026-09-09. Date: 2026-09-09.

Open the ESP32 editor, paste diagram.json, then paste sketch.ino.

Open Wokwi to paste in the files (new tab)

Get the files

Use both prepared files. This is a paste-in setup; saving a project requires a Wokwi account.

diagram.json

2,829 bytes · Circuit connections

Download

sketch.ino

15,728 bytes · ESP32 program

Download

  1. Use the launch button above to open the ESP32 editor in Wokwi.
  2. Select the editor’s diagram.json tab and replace all its text with the supplied diagram.json.
  3. Select the sketch.ino tab, replace all its text with the supplied sketch.ino, then click Start Simulation.

Steps

Screens captured against Wokwi ESP32 Compiled and booted by the Wokwi gate (ESP32 Arduino core 3.3.11); captured in the Wokwi web editor on 2026-09-09 on 2026-09-09; the tool may have moved on — the text steps are the contract.

  1. 1 Step 1

    Do
    Paste the diagram and sketch into Wokwi ESP32. Install Adafruit GFX Library and Adafruit SSD1306. Inspect the OLED and button wiring.
    You will see
    The OLED uses address 0x3C on GPIO 21/22; four active-low buttons use GPIO 25/26/27/14 and the buzzer uses GPIO 13.
    Why it matters
    A usable interface depends on consistent input and feedback paths, as well as its visual arrangement.
    Step 1: Four labelled buttons and the OLED connect to the ESP32. The ring marks the display and button wiring, routed above the OLED to keep it readable.
    Step 1 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  2. 2 Step 2

    Do
    Start at 115200 baud, read the startup settings, and tap SELECT to open the main menu.
    You will see
    Fresh settings are High Contrast OFF, Large Text OFF, Sound ON, Brightness 100%. Main menu entries are Home, Settings, and System Info.
    Why it matters
    Explicit initial state makes later changes testable. Saved NVS preferences may produce different startup values.
    Step 2: The main menu displays Home, Settings, and System Info. The ring marks the OLED display.
    Step 2 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  3. 3 Step 3

    Do
    Tap DOWN once to Settings and SELECT. With High Contrast selected, tap SELECT again.
    You will see
    Serial prints Settings saved to NVS and High Contrast: ON from a fresh baseline; the display reverses its light and dark areas.
    Why it matters
    The host prioritizes important status that users can find and interpret. A contrast preference should have an observable display effect.
    Step 3: ACCESSIBILITY shows High Contrast ON with reversed light and dark areas. The ring marks the OLED display.
    Step 3 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  4. 4 Step 4

    Do
    Tap DOWN to Large Text and SELECT, then use BACK to inspect the main menu.
    You will see
    Serial reports Large Text: ON and the main menu uses larger text. The accessibility settings list itself remains small and can look crowded.
    Why it matters
    Test every relevant screen rather than accepting a preference flag as proof of readable layout.
    Step 4: The main menu uses larger text; the bottom entry overlaps the navigation hint in the original firmware. The ring marks the OLED display.
    Step 4 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  5. 5 Step 5

    Do
    Return to Settings, navigate to Sound, and toggle it OFF; then navigate once.
    You will see
    Serial reports Sound: OFF; subsequent navigation is silent while the display and status LED still provide feedback.
    Why it matters
    The host’s alert-fatigue principle applies to feedback too: sound should be controllable without removing all indication of state.
    Step 5: Sound: OFF appears after the setting is toggled. The ring marks the disabled sound confirmation.
    Step 5 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  6. 6 Step 6

    Do
    Select Brightness repeatedly and compare the printed values with the display.
    You will see
    Starting at 100%, values cycle through 25%, 50%, 75%, and 100%. Only 25% uses the dim mode; the source does not implement four proportional intensity levels.
    Why it matters
    A numeric label can imply more precision than the device implements. Compare the setting’s meaning with actual behavior.
    Step 6: Brightness has cycled through 25%, 50%, 75%, and 100%. The ring marks the final 100% reading.
    Step 6 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)
  7. 7 Step 7

    Do
    Restore High Contrast OFF, Large Text OFF, Sound ON, and Brightness 100%; return to the home screen.
    You will see
    Serial confirms each restored value and NVS saves. The home screen returns to its small-text baseline with navigation sound enabled.
    Why it matters
    Restoring a known baseline makes the next usability comparison repeatable. Persistent preference writes alone do not establish cross-session simulator storage behavior.
    Step 7: The restored home screen uses small text with the original settings. The ring marks the OLED display.
    Step 7 · Wokwi ESP32; numbered callout added to a real capture. Enlarge screenshot (new tab)

Chapter checks

These questions refer to the chapter’s examples. Use the return links to review their answers.

  1. You're designing a dashboard for a factory floor monitoring system. The operator needs to see: (1) machine status (running/stopped/error), (2) production count, (3) temperature readings, and (4) 7-day production trends. Where should you place the machine status indicator?

    Return to the chapter’s knowledge check
  2. A smart building dashboard monitors HVAC systems. Temperature thresholds are set to: Normal (18-24 C), Warning (15-18 or 24-28 C), Critical (<15 or >28 C). During testing, operators complain about 'alert fatigue' - too many warnings. Analysis shows 85% of warnings occur briefly during HVAC startup. What's the BEST solution?

    Return to the chapter’s knowledge check

Caution

This is the source’s starter interface, not a validated accessible product. Large-text rendering can crowd the main menu and is not applied to the accessibility list. Brightness is a two-state dim command despite four percentage labels. Short taps avoid the source’s hold-to-repeat behavior. NVS persistence depends on the simulation environment; do not claim it survives a new browser project. Audio is optional feedback, never the sole status channel.

Return to Interface Design: Dashboards · Browse Labs