Run and the serial monitor
What Run actually does, what the readout means, and how to talk to a board.
Pressing Run
There are two Run buttons and they are the same button: one in the header, one on the canvas toolbar. Both turn into Stop while a circuit is running.
Run does three things in order. It builds a netlist from the diagram, which is where the breadboard stops existing (strips and wires are flattened into nets). It builds any board's firmware that needs building, as the code editor and compiling describes. Then it starts the engine.
The engine runs in a Web Worker, not on the page's own thread, and hands back one snapshot per animation frame. That is why the canvas stays smooth while a board is executing a hundred and sixty million instructions a second.
Editing while it runs
You can. The circuit rebuilds itself a moment after you stop editing, so a burst of changes is one restart rather than twenty. Holding a pushbutton, turning a potentiometer and typing into the serial monitor all work on the running circuit.
The readout
The header shows two numbers, for example 12.480 s 1.00x.
The first is simulated time: how long the circuit has been running in its own
world. The second is speed against the clock on the wall. 1.00x means the
simulation is keeping pace with real time, which is what you want. Below that
and the circuit is running slower than the real thing would;
the simulation runs slow says what causes
it.
Beside the readout is the engine badge, which says whether the WebAssembly engine is up.
Show levels
To read what a circuit is doing rather than watch it, turn on Show levels,
in the more menu on the canvas toolbar, or press Shift+L. Every net that has a
wire then carries a small live readout: H for a net driven high, L for one
driven low, X where two drivers of equal strength disagree, and Z for a net
nothing is driving at all, each with the net's voltage to two decimals beside
it. A net you have named shows its readout under its name and the rest show
theirs on the open stretch of their wires, never over a part. The numbers
repaint every frame, so a clock divider or a shift register can be read a net at
a time in front of a class.
It is off until you turn it on, and this browser remembers your answer. Stop the simulation and the last frame stays on screen, grayed, which is usually the one worth talking about. Zoom far enough out and the readouts go, so a whole board is still a board, and an exported picture never carries them: an export is of the circuit, not of one moment of it running.
The serial monitor
The strip along the bottom of the window. Anything a board writes to its UART
arrives here as text: UTF-8 decoded as it streams, carriage returns dropped,
\n ending a line. A half-written line is shown as it arrives rather than held
back until the newline.
- Clear empties the log. It keeps the last two thousand lines across every board, and drops the oldest after that.
- The input row at the foot sends bytes back to a board. Type and press Enter, or press Send.
- With more than one board talking, each line is prefixed with the board it came from and a picker chooses which board the input row is talking to.
Each board keeps its own decoder, so two boards writing at the same time never interleave bytes inside a line.
Which pins carry serial
The serial monitor is wired to the board's UART directly, not to pins on the breadboard. On the Uno that is USART0, on the ESP32-C3 it is UART0, on the Pico UART0 and on the STM32F411 USART1. On the real hardware those signals share pins with GPIO; here the pins stay GPIO and the bytes go to the monitor.
Nothing appearing? The serial monitor shows nothing.