References: 14. Building an Expression Menu & Live Controls
-
Switch (Contact bounce) - Wikipedia - Explains why mechanical switch contacts physically bounce apart and reconnect several times when closed, producing a rapid pulse train instead of one clean transition, and surveys hardware and software debouncing approaches.
-
Rotary encoder - Wikipedia - Surveys absolute and incremental encoder designs, explaining how an incremental encoder outputs two periodic signals whose phase relationship reveals which direction a knob is turning, the foundation of this chapter's encoder tracking.
-
Incremental encoder - Wikipedia - Detailed technical breakdown of quadrature encoding, showing how output signals A and B's 90-degree phase offset lets a decoder recover both step count and rotation direction from two overlapping square waves.
-
Practical Electronics for Inventors (4th Edition) - Paul Scherz and Simon Monk - McGraw-Hill Education - Hands-on electronics reference covering mechanical switch behavior, hardware and software debounce circuits, and potentiometer and rotary-encoder wiring, written for exactly the kind of physical control panel this chapter builds.
-
The Art of Electronics (3rd Edition) - Paul Horowitz and Winfield Hill - Cambridge University Press - Rigorous classic electronics text covering switch contact bounce, Schmitt-trigger and flip-flop debounce circuits, and digital signal conditioning that underlies the software debounce techniques this chapter teaches.
-
Basic Debouncing - Adafruit Learning System - Walks through a Python-based Debouncer class that samples a pin repeatedly and only reports a change once its value has stayed stable, directly paralleling this chapter's cooldown-timer and interrupt-recheck debounce techniques.
-
Rotary Encoder Overview - Adafruit Learning System - Explains how a mechanical incremental encoder's A and B pins contact ground in a specific order depending on rotation direction, the same quadrature comparison this chapter's
on_encoder_turn()handler performs. -
machine.Pin - Control I/O pins - MicroPython Documentation - Official reference for configuring GPIO pins, pull-up resistors, and interrupt handlers with
Pin.irq(), the exact API this chapter uses to read buttons and encoder pins on falling edges. -
A Guide to Debouncing - Jack Ganssle, The Ganssle Group - Widely cited embedded-systems guide presenting real oscilloscope measurements of bounce duration across many switch types, giving concrete evidence for why a 20-50ms debounce time constant is a safe design choice.
-
Principles and Patterns of User Interface Design - GeeksforGeeks - Surveys interface-design principles such as consistency, feedback, and recoverability, giving a software-design vocabulary for this chapter's control mapping design and user interface feedback decisions.