Mastery Series

Mastering Arduino Part 10 card (horizontal)
Mastering Arduino Part 10: Analog Measurement That Isn't a Lie
analogRead() returns a ratio, not a voltage. Learn why raw ADC readings jitter and lie, then fix both with averaging and real multimeter calibration.
Mastering Arduino Part 9 card (horizontal)
Mastering Arduino Part 9: Rotary Encoders and Quadrature Input
Decode rotary encoder position and direction with interrupts, Gray-code state tables, measured detents, LEDs, and a reliably debounced reset button.
Mastering Arduino Part 8 card (horizontal)
Mastering Arduino Part 8: Interrupts: Reacting Without Polling
Learn attachInterrupt(), ISR rules, volatile data sharing, and when polling is enough by building a pulse monitor that proves which events get missed.
Mastering Arduino Part 7 card (horizontal)
Mastering Arduino Part 7: Systematic Debugging: A Method, Not a Miracle
Learn a repeatable 5-step debugging method for Arduino, then use it to hunt down three planted bugs in a working project.
Mastering Arduino Part 6 card (horizontal)
Mastering Arduino Part 6: Digital I/O You Can Trust
Part 6 of the Arduino Mastery Series: why a mechanical button chatters, how pull-up and pull-down resistors work, and a tunable two-button counter project that debounces both the hard way and the easy way, for real this time.
Mastering Arduino Part 5 card (horizontal)
Mastering Arduino Part 5: Arrays, Strings, and Data in C++
Part 5 of the Arduino Mastery Series: how arrays store more than one value under a single name, how a C-string differs from Arduino's String class, and a serial-controlled LED chase project that puts real data types to work.
Mastering Arduino Part 4 card (horizontal)
Mastering Arduino Part 4: Timing Without delay(), millis(), micros(), and Non-Blocking Loops
Part 4 of the Arduino Mastery Series: why delay() freezes your whole sketch, how millis() and micros() track time without blocking, and a non-blocking control panel project that blinks, dims, and times a button press all at once.