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: 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: 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 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.