Find your first change in SmartKnob
Move from a small controller to an existing firmware project: trace how a mode reaches the display and motor, then isolate a presentation-only change.
You needYour event trace from stage three and the SmartKnob source. An editor is enough to map the code; compiling needs the source development setup. Hardware verification is separate.
Reference checked 9 September 2026. Authored exercise; no physical build result is claimed.
Understand the change
Map a larger program
Open the source files listed in the record. Locate the configuration table, then follow how a selected configuration reaches the display and motor tasks. Record the actual function names in your revision.
Keep the change bounded
In the first configuration, change only its visible text to Free turn followed by No detents on the second line. Check the diff beside the unchanged baseline. No haptic strength, limits or hardware definitions should change.
Use the original build setup
Select the source environment for the actual hardware revision. Compile the unchanged baseline before the edit. A successful compile proves neither that the correct board was chosen nor that the motor has been calibrated.
Separate the evidence
Save the source map and diff even without hardware. On an already working compatible build, follow the original instructions and compare the visible label and mode selection. Record what was reviewed, compiled and physically observed separately.
A focused request to try
Use this with a suitable AI assistant. Its response will vary; compare it with the checks below.
Read my exact scottbez1/smartknob revision. Trace the configs array in firmware/src/interface_task.cpp through configuration selection, the display and the motor task. Propose changing only the first mode text from Unbounded\nNo detents to Free turn\nNo detents. Keep its bounds, detent values, calibration and pins unchanged. Explain why my Uno debounce sketch must not replace this firmware. Produce a minimal diff and checks for source review, compilation and optional device observation.
Worked reference example
Read the example, predict one change, then check the result.
# SmartKnob first-change record ## Establish the baseline Repository: https://github.com/scottbez1/smartknob Exact source commit: Hardware revision, if any: Selected PlatformIO environment, from the source: Baseline compile result: not run Baseline device behaviour: untested ## Source map to complete against your revision platformio.ini: build environment and feature selection firmware/src/main.cpp: task setup and connections firmware/src/interface_task.cpp: configs and configuration selection firmware/src/display_task.cpp: visible presentation firmware/src/motor_task.cpp: haptic behaviour Record the relevant functions and how configuration moves between tasks: ## One proposed presentation change File: firmware/src/interface_task.cpp In the first configs entry, replace only the text string: Before: "Unbounded\nNo detents" After: "Free turn\nNo detents" Find the entry by its original text, not an assumed line number. Inspect the diff: one text value changes; all numeric fields remain unchanged. This is a label change, not a new mode or a haptic calibration. ## Review and checks Source review: identify how the selected config reaches display and motor. Compile: use the original instructions for the exact hardware environment. If compile fails: record the first error; compare the unchanged baseline. Device check, only with an already working compatible build: - the renamed mode displays the new text; - changing modes still works; - the original mode behaviour is unchanged by the label edit. Observed results, or mark each check not run: ## Rollback and next question Keep the original source revision and save this one-file diff. Revert the text change and rebuild to compare if necessary. Next investigation: where does the input select a mode, and what source constraints must remain before changing that behaviour? Do not paste the Uno pin assignment or LED loop into the motor task.
Make this project plan your own
Replace the example measurements and complete the source checks. Keep untested results marked as untested.
Use your own dimensions, source revision and observed results. Keep the downloaded file with your source files and build notes.
Check your result
- The source map identifies configuration, display and motor responsibilities.
- The diff changes one text field and no numeric configuration or pin values.
- Build environment and source revision are recorded before compilation.
- A compile result and a physical observation are recorded separately, or explicitly not run.
Where this can go wrong
SmartKnob has motor control, calibration and hardware dependencies beyond these exercises. The Uno example teaches state handling; it is not compatible replacement firmware or a shortcut through the original build instructions.
Go to the source
SmartKnob configuration and interface source. Confirm current tool instructions before using them.