Blink LED
Connect D13 through a 220 Ω resistor to an LED and ground. Build, run, and compare the light with GPIO and Serial ON/OFF records.
Open workbench → Project & files → Choose exampleLEARN BY CHANGING A WORKING CIRCUIT
Each starter enters through the same project, pin, and electrical validation as a local file.
QUICK START
Open the workbench, choose Project & files, then Choose example. The workbench keeps its existing unsaved-change check; this page never replaces a draft automatically.
Connect D13 through a 220 Ω resistor to an LED and ground. Build, run, and compare the light with GPIO and Serial ON/OFF records.
Open workbench → Project & files → Choose exampleRead a tactile button on D2 with INPUT_PULLUP. Press it in Interact mode and inspect firmware-derived input and Serial state.
Turn a potentiometer feeding A0 and compare its ideal 0–5 V position with the 10-bit ADC values produced by executed firmware.
Open workbench → Project & files → Choose exampleAdjust a distinct top-adjust trimmer feeding A1 and compare its retained ideal 0–5 V position with ADC values from executed firmware. The exact trimmer type is AVR-only.
Open workbench → Project & files → Choose exampleDrive a current-limited LED from D3 and relate duty cycle, relative brightness, and the logic analyser waveform.
Open workbench → Project & files → Choose exampleCompare fixed 25% and 75% duty cycles on the same validated D3, resistor, LED and ground path. Executed firmware prints each phase over Serial.
Open workbench → Project & files → Choose exampleRead the ideal temperature module on A1, write whole Celsius to a 16×2 LCD, and select a current-limited RGB status colour.
Open workbench → Project & files → Choose exampleBuild 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.
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 exampleLearn: 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 exampleLearn: maintained Open/Closed state. Try: toggle the D3 pull-up input. Observe: compiled D13 and Serial state. Limits: ideal contact with no bounce or contact resistance.
Open workbench → Project & files → Choose exampleLearn: COM selects one isolated throw. Try: choose GND or 5 V on D8. Observe: the explicit BREAK transition and compiled input result. Limits: Partial, direct digital-input model only.
Open workbench → Project & files → Choose exampleLearn: ideal percentage-to-voltage conversion. Try: move the light control. Observe: A1 voltage, ADC counts and D13. Limits: no lux calibration or physical response.
Open workbench → Project & files → Choose exampleLearn: active-low threshold hysteresis. Try: cross the threshold in both directions. Observe: D7, D13 and Serial LIGHT/DARK. Limits: no lux calibration or comparator noise.
Open workbench → Project & files → Choose exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: logic enable versus physical sound. Try: run the D8 on/off sequence. Observe: GPIO, Serial and the silent indicator. Limits: Partial; no audio, current or acoustic accuracy.
Open workbench → Project & files → Choose exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: seven independent current-limited channels. Try: run digits 0, 1, 2 and 8. Observe: D3–D9 and Serial labels. Limits: one ideal digit without decimal point or multiplexing.
Open workbench → Project & files → Choose exampleLearn: 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 exampleLearn: 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 exampleLearn: phase order encodes direction. Try: turn one CW and one CCW detent. Observe: exact ordered D2/D3 Gray-code events. Limits: ideal 1 ms phases without bounce or acceleration.
Open workbench → Project & files → Choose exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleLearn: 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 exampleEvery working example names one small, supported next step. The same guidance appears in the searchable chooser cards.
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.
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.
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.
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.
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.
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.