LEARN BY CHANGING A WORKING CIRCUIT

Starter examples

Each starter enters through the same project, pin, and electrical validation as a local file.

QUICK START

Choose here, load safely in the workbench

Open the workbench, choose Project & files, then Choose example. The workbench keeps its existing unsaved-change check; this page never replaces a draft automatically.

Thermostat boundary test

Build the exact A1 temperature, D2 active-low enable and current-limited D13 indicator circuit. Run four reset-isolated virtual-time scenarios—below, equal, above and disabled—then load the known-bad <= firmware to prove the equality defect is caught from executed D13 and matching UART evidence.

Open workbench → Project & files → Choose example

Ground reference input

Learn: why a declared 0 V reference makes input levels meaningful. Try: build, run and press the button. Observe: D2, D13 and Serial. Limits: the symbol is topology authority, not an executable peripheral.

Open workbench → Project & files → Choose example

Ground and 5 V references

Learn: why 0 V common and a fixed source are distinct. Try: build, run and press the D2 button while the source holds D3 HIGH. Observe: both states independently in compiled Serial output. Limits: AVR-only topology projection, not a bench supply or current/fault model.

Open workbench → Project & files → Choose example

BME280 temperature, humidity and pressure

Learn: read calibrated environmental values through I2C registers. Try: move temperature, humidity and pressure independently. Observe: A4/A5 TWI transactions, chip identity and compensated TEMP_C/HUMIDITY_RH/PRESSURE_HPA Serial output. Limits: one idealized fixed-address AVR breakout with fixed calibration and no physical accuracy, noise, altitude or conversion-latency effects.

Open workbench → Project & files → Choose example

DHT22 decimal temperature and humidity

Learn: decode a timed five-byte signed decimal sensor response. Try: move temperature and humidity independently. Observe: D5 timing and checksum-validated TEMP_C/HUMIDITY_RH Serial output. Limits: one idealized AVR-only protocol model without physical accuracy, noise, cable or sensor-latency effects.

Open workbench → Project & files → Choose example

DHT11 temperature and humidity

Learn: decode a timed five-byte digital sensor response. Try: move temperature and humidity independently. Observe: D4 timing and checksum-validated TEMP_C/HUMIDITY_RH Serial output. Limits: integer AVR-only protocol model without physical accuracy, noise, cable or latency effects.

Open workbench → Project & files → Choose example

DS18B20 OneWire temperature

Learn: use reset/presence, command and read slots on one bidirectional line. Try: move temperature through positive and negative values. Observe: D3 and CRC-validated signed TEMP_C Serial output. Limits: one externally powered AVR-only device without parasite power, multidrop addressing, conversion latency or physical thermal effects.

Open workbench → Project & files → Choose example

Passive piezo transitions

Learn: a passive piezo needs a changing output. Try: run the D9 transition sequence. Observe: visual driven/rest state and transition activity. Limits: no audio, frequency calibration, loudness or physical piezo accuracy.

Open workbench → Project & files → Choose example

Speaker signal transitions

Learn: firmware output activity differs from physical sound. Try: run the D10 transition sequence. Observe: visual driven/rest and transition activity. Limits: no audio, impedance, power or physical speaker accuracy.

Open workbench → Project & files → Choose example

Hobby servo position intent

Learn: pulse width encodes position intent. Try: run the 0°, 90° and 180° sequence. Observe: the visual horn follows valid commands. Limits: no motion, torque, current, load or physical accuracy.

Open workbench → Project & files → Choose example

Continuous servo command intent

Learn: pulse width encodes reverse, stop and forward intent. Try: run all three commands. Observe: the visual direction arrow and neutral state. Limits: no RPM, torque, current, inertia or physical accuracy.

Open workbench → Project & files → Choose example

DC motor through L298N

Learn: a motor requires a driver rather than direct MCU wiring. Try: run forward, brake, reverse and coast commands. Observe: matching motor and driver direction intent. Limits: no motor supply, RPM, torque, current, heat, load or physical accuracy.

Open workbench → Project & files → Choose example

Four-digit multiplex

Learn: eight shared current-limited segments and four active-low digit selects. Try: run the deliberately slowed 1-2-3-4 scan. Observe: the retained visible digits and Serial DISPLAY 1234. Limits: ideal sampled AVR multiplex state without driver, package-current or refresh-rate fidelity.

Open workbench → Project & files → Choose example

Traffic light sequence

Learn: coordinate three independent current-limited outputs. Try: run red, red+amber, green and amber. Observe: D3, D5, D6 and Serial phase labels. Limits: ideal AVR indicator without physical optics, load, fault or road-signal timing compliance.

Open workbench → Project & files → Choose example

Two-axis analogue joystick

Learn: read two independent analogue axes plus one active-low push switch. Try: move X and Y, then press the stick. Observe: A0/A1 ADC values and D2 switch state. Limits: ideal 0–5 V axes without dead zone, mechanics, coupling, noise or bounce.

Open workbench → Project & files → Choose example

3×4 matrix keypad

Learn: scan four rows and three columns without inventing ground or supply. Try: select one key. Observe: the exact row-to-column contact and decoded key. Limits: one ideal pressed key without ghosting, rollover, debounce or membrane resistance.

Open workbench → Project & files → Choose example

4×4 matrix keypad

Learn: extend the same passive scan to sixteen keys. Try: select one row-column key. Observe: the exact eight-wire matrix contact and decoded key. Limits: one ideal pressed key without ghosting, rollover, debounce or key mechanics.

Open workbench → Project & files → Choose example

Reed, emergency-stop and foot-pedal inputs

Learn: compare magnetic, latching normally-closed and momentary normally-open contacts. Try: present the magnet, latch the instructional stop and press the pedal. Observe: D7–D9 and the three explicit ground returns. Limits: ideal AVR contacts only; the emergency-stop model is not safety-rated and provides no certification, force, bounce or resistance behavior.

Open workbench → Project & files → Choose example

Four-position rotary selector

Learn: one common wiper selects exactly one of four explicit contacts. Try: choose positions 1–4. Observe: COM on D7 reads the selected ground or 5 V reference. Limits: ideal maintained contact without bounce, overlap, resistance or shaft mechanics.

Open workbench → Project & files → Choose example

Common-anode RGB LED

Learn: common-anode channels are active-low. Try: sink red, green and blue independently. Observe: D3/D5/D6 through three explicit 330 Ω resistors. Limits: ideal relative colour without optical, thermal or package-current accuracy.

Open workbench → Project & files → Choose example

Ten-segment LED bar graph

Learn: ten package segments remain ten independent circuits. Try: run the D2–D11 sequence. Observe: ten separately resisted anodes and ten explicit ground returns. Limits: no shared cathode, optical coupling, thermal or package-current model.

Open workbench → Project & files → Choose example

Soil moisture and water level

Learn: compare resistive soil, capacitive soil and water-level analogue ratios. Try: adjust all three independently. Observe: A2/A3/A4 and their ideal 0–5 V ADC values. Limits: no soil, conductivity, corrosion, dielectric, depth, liquid or calibration physics.

Open workbench → Project & files → Choose example

Rain, sound-level and flame analogue sensors

Learn: compare three ideal detector ratios through the same ADC principle. Try: adjust rain, sound and flame response independently. Observe: A0/A1/A5 and the corresponding 0–5 V values. Limits: no weather, acoustic, spectral, combustion, calibration, latency or alarm-safety accuracy.

Open workbench → Project & files → Choose example

Float, tilt and vibration contacts

Learn: three different physical ideas can share one active-low contact model. Try: raise the liquid state, tilt the switch and trigger vibration independently. Observe: D4/D5/D6 with INPUT_PULLUP and three explicit ground returns. Limits: ideal AVR contacts without liquid mechanics, angle, bounce, vibration timing, resistance or physical calibration.

Open workbench → Project & files → Choose example

LDR, NTC, flex and force divider sensors

Learn: four resistive sensors use declared integrated-divider transfers. Try: adjust light, temperature, bend and relative force. Observe: A0/A1/A2/A3 ADC values. Limits: ideal transfer curves without lux, thermal, angle, newton, pressure, tolerance, self-heating or dynamic-response accuracy.

Open workbench → Project & files → Choose example

Touch, PIR and Hall presence sensors

Learn: compare three independent active-high digital presence signals. Try: touch, add motion and present a magnet. Observe: D4/D5/D6. Limits: ideal levels without capacitance, PIR optics, magnetic thresholds, noise, latency or physical range.

Open workbench → Project & files → Choose example

Obstacle and line reflective sensors

Learn: compare active-low reflected-obstacle and dark-line outputs. Try: toggle each detection independently. Observe: D7/D8. Limits: ideal digital states without distance, reflectance spectrum, optics, ambient light, calibration or timing.

Open workbench → Project & files → Choose example

Flow and wind pulse inputs

Learn: count manually authored rising edges on two independent inputs. Try: toggle LOW→HIGH on flow and wind. Observe: D4/D5 edge counts. Limits: no automatic pulse train, flow rate, wind speed, calibration, bounce or physical timing.

Open workbench → Project & files → Choose example
See the full learning path

Every working example names one small, supported next step. The same guidance appears in the searchable chooser cards.

  1. Blink LEDNext: Load Button input to add a user-controlled digital input.
  2. Button inputNext: Load ADC dial to compare a digital input with a measured analogue value.
  3. ADC dialNext: Load Trimmer calibration to compare a set-and-retain adjustment with a rotary control.
  4. Trimmer calibrationNext: Load PWM fade to turn a measured range into a variable output.
  5. PWM fadeNext: Load PWM pulse to compare exact duty-cycle boundaries.
  6. PWM pulseNext: Load Temperature display to combine analogue input with several outputs.
  7. Temperature displayNext: Load Thermostat boundary test to turn the threshold into saved scenarios and requirements.
  8. Thermostat boundary testNext: Open Scenario timeline to change one timed input and rerun its requirement after a fresh Build.
  9. Ground reference inputNext: Load SPST toggle input to keep an input state without holding a button.
  10. Ground and 5 V referencesNext: Load SPST toggle input to replace a momentary ground path with a maintained contact.
  11. SPST toggle inputNext: Load SPDT input selector to choose between two explicit sources.
  12. SPDT input selectorNext: Load Quadrature encoder to observe ordered changes across two inputs.
  13. Analogue light levelNext: Load Digital light threshold to compare continuous and thresholded sensing.
  14. Digital light thresholdNext: Load Thermostat boundary test to express a threshold as an executable requirement.
  15. BME280 temperature, humidity and pressureNext: Load DHT22 to compare I2C registers with a timed single-wire payload.
  16. DHT22 decimal temperature and humidityNext: Load DHT11 to compare integer and signed decimal payload encodings.
  17. DHT11 temperature and humidityNext: Load Digital light threshold to compare a timed protocol sensor with a simple digital level.
  18. DS18B20 OneWire temperatureNext: Load DHT11 to compare OneWire command slots with a fixed timed sensor payload.
  19. Logical active buzzerNext: Load Traffic light sequence to coordinate three current-limited outputs.
  20. Passive piezo transitionsNext: Load Logical active buzzer to compare a three-terminal self-oscillating module.
  21. Speaker signal transitionsNext: Load Passive piezo transitions to compare transducer boundaries.
  22. Hobby servo position intentNext: Load Continuous rotation servo to compare direction intent.
  23. Continuous servo command intentNext: Load Hobby servo to compare position intent.
  24. DC motor through L298NNext: Load Hobby servo to compare pulse-position intent with bridge direction control.
  25. Traffic light sequenceNext: Load Seven-segment digits to coordinate a larger group of outputs.
  26. Seven-segment digitsNext: Load Four-digit multiplex to coordinate shared segments and digit selection.
  27. Four-digit multiplexNext: Load PWM pulse to compare switched outputs with duty-cycle output.
  28. Quadrature encoderNext: Load Thermostat boundary test, then open Scenario timeline to author inputs within the supported thermostat subset.
  29. Two-axis analogue joystickNext: Load 3×4 matrix keypad to compare analogue position with a scanned contact matrix.
  30. 3×4 matrix keypadNext: Load 4×4 matrix keypad to add one column while preserving the same scan principle.
  31. 4×4 matrix keypadNext: Load Quadrature encoder to compare matrix selection with ordered phase transitions.
  32. Reed, emergency-stop and foot-pedal inputsNext: Load SPDT input selector to compare three specialized contacts with one maintained changeover contact.
  33. Four-position rotary selectorNext: Load Common-anode RGB LED to use three active-low output channels.
  34. Common-anode RGB LEDNext: Load Ten-segment LED bar graph to expand from three channels to ten independent outputs.
  35. Ten-segment LED bar graphNext: Load Traffic light sequence to compare a packaged indicator with three separately named lights.
  36. Soil moisture and water levelNext: Load Rain, sound-level and flame analogue sensors to compare six ideal ratio inputs.
  37. Rain, sound-level and flame analogue sensorsNext: Load Digital light threshold to compare continuous detector ratios with a thresholded digital output.
  38. Float, tilt and vibration contactsNext: Load Reed, emergency-stop and foot-pedal inputs to compare three more specialized contact meanings.
  39. GPIO0 on + UARTNext: Load GPIO0 off + UART to test the opposite output boundary.
  40. GPIO0 off + UARTNext: Use Download copy and Open local project to verify data-only recovery before changing source.
  41. GPIO2 on + SerialNext: Load GPIO2 off + Serial to test the opposite model-output boundary.
  42. GPIO2 off + SerialNext: Use Download copy and Open local project to verify data-only recovery before changing source.
  43. PB0 on + USART3Next: Load PB0 off + USART3 to test the opposite observed-output boundary.
  44. PB0 off + USART3Next: Use Download copy and Open local project to verify data-only recovery before changing source.

Make it yours

Open a starter from the workbench, move parts without detaching wires, edit firmware, rebuild, and save the canonical project file on your computer. There is no account or cloud project store.

First projects for the narrow controllers

Choose Architecture / family, then the exact Tested controller / board. Each group currently has one tested profile: ATmega328P, RP2040 Pico, ESP32-C3 development module or STM32F429ZI. Keep its complete source template and edit only the values named below; these are bounded lessons, not broad family, board or SDK support.

RP2040 Pico · GPIO0 light

Goal: drive an external LED and print one UART0 marker.

Wire: GP0 physical pin 1 → series resistor → LED anode; LED cathode → GND physical pin 3.

Edit: change only GPIO0 level 0/1 and the 1–24 character uppercase UART text in the fixed main.c.

Expect: the rp2040js worker reports GPIO0, the ideal LED follows the accepted circuit, and UART0 shows your marker.

Save/Open: the download ends in .intent-mcu.json. Open restores source, parts, properties, layout and wires, but requires a fresh Build.

ESP32-C3 · GPIO2 model and QEMU UART

Goal: boot compiled flash in actual QEMU and compare its UART with the separately labelled GPIO2 LED model.

Wire: GPIO2 J1 pin 4 → series resistor → LED anode; LED cathode → GND J1 pin 6.

Edit: change only GPIO2 OUTPUT/INPUT, HIGH/LOW and the uppercase marker in the fixed sketch.

Expect: QEMU supplies CPU/UART/reset evidence. The LED comes from executed register writes in the project model; QEMU pin state is not claimed.

Save/Open: the local .intent-mcu.json common envelope contains project data only. Open retires flash/runtime authority until Build and Run succeed again.

STM32F429ZI · PB0 and USART3

Goal: compile the strict C11 source and observe PB0 plus USART3 in actual Renode.

Wire: PB0 CN11 pin 34 → series resistor → LED anode; LED cathode → GND CN11 pin 19.

Edit: change only PB0 HIGH/LOW and the uppercase USART3 marker in the fixed main.c.

Expect: Renode reports PB0 and USART3 twice across reset replay; the external LED path remains an ideal teaching rendering.

Save/Open: the local .intent-mcu.json common envelope excludes ELF and runtime state. Open requires a fresh Build before Run or Reset.

Paired working examples

Each narrow-controller workbench now offers two visible authored-data cards: output HIGH with one UART marker, and output LOW with a different marker. Loading a card never restores firmware or runtime state. Build and Run must succeed again before the LED or terminal result is authoritative. Button, ADC and PWM remain explicitly unavailable on these three narrow public profiles.

Repair after deleting a part

  1. Save the incomplete project and Open it again if you want to prove history-free recovery.
  2. In Supported parts, add the one missing resistor or LED. The fixed stable ID returns, with no cable.
  3. Activate two compatible free named pins for each missing connection. Unsafe resistance/colour pairs reject without changing the accepted draft.
  4. When the circuit state says accepted, Build fresh and Run. Old executable authority never returns from the file.