This course is about real hardware, but a web page cannot plug into your board, and it would be dishonest to pretend otherwise. So every page is clear about three things: what you can do with no parts at all, what has been checked by machine, and what only your own bench can prove. This last section of the chapter explains those labels and the different ways through the chapters.
Three ways to do a lab
Each lab tells you which of three lab modes it suits.
Simulate means you build the circuit and run the program on a website that pretends to be the hardware. No parts needed. Wokwi runs Arduino code on pretend boards. Tinkercad Circuits has a pretend classic Arduino Uno and a breadboard. Falstad's simulator shows current moving around a circuit, with no chip involved. You open these sites yourself, and make a free account where one is needed. The course never relies on them. They also lag behind new boards. In October 2026, Wokwi's list of boards had the older Arduino Uno and the ESP32-S3, but not the Uno R4. So a simulated Uno R4 lab runs on the older Uno instead.
Build means you wire it up on your own breadboard and run it on your own board. Only this mode shows you what real parts do. A wire half out of its hole. A USB cable that charges but can't carry data. A sensor that reads two degrees too warm.
Both means you simulate first to get the program right, then build it for real. When the parts are new to you, this is the safest path.
Keep one thing in mind. A simulator copies how parts are supposed to behave. It can't test your actual parts. If your code works there, you know your logic and your wiring plan are right. You don't yet know about your hardware.
Every lab names one of three lab modes:
- Simulate. Build the circuit and run the program in a free online simulator. Wokwi (wokwi.com) simulates microcontroller boards running Arduino code; Tinkercad Circuits (tinkercad.com) simulates a classic Arduino Uno with parts on a breadboard; Falstad's circuit simulator (falstad.com/circuit) animates currents and voltages in a circuit with no microcontroller. You open these yourself, on your own account where one is needed; the course never depends on them. Simulators lag behind new boards: as of 2026-10, Wokwi's supported-hardware list includes the Arduino Uno (ATmega328P) and the ESP32-S3 but not the Uno R4 (Wokwi docs), so a simulated Uno R4 lab runs on the older Uno instead.
- Build. Wire it on your breadboard and run it on your own board. This is the only mode that meets real-part behaviour: a loose jumper, a USB cable that only charges, a sensor that reads two degrees high.
- Both. Simulate first to get the logic right, then build. This is the most reliable route when parts are new to you.
A simulator models its parts; it does not test them. Code that works in one has proved its logic and your wiring plan, not your hardware.
Which lab mode fits?
Read each situation and decide which mode suits it before you drag. Then check.
Loading interactive…
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Correct answer
Also accepted:
Why
Why
Worked example
Choosing a mode for a first lab (typical)
-
1
A learner has an ESP32-S3-DevKitC-1 on order and wants to start the blinking-LED lab in Chapter 11 today.
-
2
Today: simulate. Wokwi supports the ESP32-S3, so the learner can wire an LED and resistor there and run the sketch.
-
3
When the board arrives: build. The same sketch now runs on their own board, and the real LED, resistor and USB cable get tested.
-
4
Result: both. The logic was settled before any parts arrived.
What "checked" means on these pages
People say firmware "works" when they mean three quite different things. This course keeps them apart.
- Compiled for a board. The code was turned into a program with the real tools for that exact board, and it built without errors. Each code box on these pages names its boards, for example "Arduino sketch Β· Uno R4 Minima, ESP32-S3". Each one was built for those boards when the site was made. That proves the code is written correctly and only uses commands the board has. It does not prove the program does what you want.
- Logic unit-tested on the host. A lab you download keeps its thinking part apart from its hardware part, such as a table of blink timings. That part comes with tests. A unit test is a small program that runs one piece of code and checks its answer. These tests run on an ordinary computer, called the host. That proves the logic is right, but not the wiring.
- Hardware-tested. A real person ran it on that board and wrote down what happened. Only this covers wires, timing and real parts.
Unless a page says otherwise, the labs here are compiled and host-tested. We have not tested them on hardware. When a page says what an LED "should" do, that is what to expect, not a recording of a real run. No page runs code in your browser or pretends to be a board.
Every hardware example names its board. Where the wiring or code is different, a board switch shows each version. Choose your board once. Every switch like it, on every page, then follows your choice. Here is one.
Three claims can be made about a piece of firmware, and they are not the same:
- Compiled for a board. The code was built with the real toolchain for that exact board. Every sketch on these pages is labelled with its boards, for example Arduino sketch Β· Uno R4 Minima, ESP32-S3, and was compiled for each one when the site was built. That proves it has no syntax or type errors and that every function it calls exists for that board. It does not prove the program does the right thing.
- Logic unit-tested on the host. A lab's downloadable project keeps its board-free logic (a timing table, a state machine) in separate files with tests, and those tests run on an ordinary computer, the host. A unit test is a small program that runs one piece of code and checks the result. That proves the logic, not the wiring.
- Hardware-tested. A person ran it on the named board and recorded what happened. That is the only claim that covers wiring, timing and real parts.
Unless a page says otherwise, the labs here are compiled for their boards and host-tested, and not hardware-tested by us. When a page describes what an LED or a serial window should show, that is the expected behaviour, not a recorded run. No page runs code in your browser or pretends to be a microcontroller.
Every hardware example names its board. Where wiring or code differs, a board switch shows each version. Pick your board once and every such block on every page follows it. Here is one.
Arduino Uno R4 Minima. Pins are 5 V. An LED on a pin needs at least 470 Ξ© so the pin stays within its 8 mA limit (worked out in Chapter 11).
ESP32-S3-DevKitC-1. Pins are 3.3 V. An LED on a pin uses 220 Ξ©, and a 5 V signal must be scaled down before it reaches a pin (Chapter 3 Β§5).
What does each label prove?
Sort each claim by the weakest label that already proves it. Decide before you drag, then check.
Loading interactive…
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
What this task checks
Structure checked automatically. Whether your ideas are convincing isn't graded, so reread with the checklist.
The compiler says
A model answer
Correct answer
Also accepted:
Why
Why
Worked example
Compiled is not working (common trap)
-
1
A learner copies a sketch labelled Uno R4 Minima, ESP32-S3, uploads it to an ESP32-S3, and the LED stays dark. "But it was compiled for this board," they say.
-
2
Read the claim. Compiled means the code is valid for the board. It says nothing about which pin the LED is on.
-
3
Look at the bench. The sketch uses one pin; the learner wired the LED to another. The wiring was never part of what compiling checks.
-
4
Fix it. Move the LED to the pin the sketch drives, or change the pin number in the sketch.
Routes through the course
The chapters are written to be read in order. If you are new to all of this, do exactly that. If you already know some of it, you can follow a shorter route, a suggested list of chapters:
- Beginner maker: chapters 0 to 5, then 7, 8, 10, 11, 12, 16 and 17, then the first big project at the end.
- Arduino and electronics: chapters 0 to 13 and 16 to 19, then the first two big projects.
- Programmer new to hardware: chapters 0, 2, 3, 5, 6, 8, 9, 11 to 15, and 19 to 22. It skips Chapter 10, the short C++ course.
- Embedded C/C++: chapters 9, 13 to 15, and 20 to 22.
- Low-power devices: chapters 4, 6, 20, 22 and 23, then the battery-powered project.
A route is only a suggestion. Every page stays open to you. If a later page uses a word you don't know, the chapter you skipped is where to look. You don't have to buy all the parts at once, either. Chapter 1 says which parts each chapter needs.
The chapters are written to be read in order, and a beginner should do exactly that. Readers who arrive with experience can take a shorter route, a suggested subset of chapters:
- Beginner maker: 0β5, 7, 8, 10, 11, 12, 16, 17, then the first capstone project.
- Arduino and electronics: 0β13 and 16β19, then the first two capstones.
- Programmer new to hardware: 0, 2β3, 5β6, 8β9, 11β15, 19β22. It skips the Chapter 10 C++ primer.
- Embedded C/C++: 9, 13β15, 20β22.
- Low-power devices: 4, 6, 20, 22β23, then the battery-powered capstone.
A route is a reading guide, not a lock: every page stays open, and a skipped chapter is the place to look when a later page uses a term you don't know. Hardware can be bought chapter by chapter, since Chapter 1 Β§3 says which parts each chapter needs.
Worked example
Picking a route (recognition)
-
1
A web developer who writes JavaScript every day wants to build a battery-free desk gadget and has never used a breadboard. Which route?
-
2
Match the background. They can program but know no electronics. That is the programmer new to hardware route.
-
3
Check what it skips. It skips Chapter 1 (buying a kit) and Chapter 4 (components). They still need parts, so reading Chapter 1 anyway costs little and saves a wrong order.
-
4
Conclude. Programmer route, plus Chapter 1 before buying.
Where this goes next
The lab modes start in Chapter 3, whose LED circuit can be simulated or built. Chapter 8 installs the tools that do the compiling described here. Chapter 9 follows each step from source code to a program in flash. Chapter 11 has the first project you can download, with tests that run on your computer. Chapter 24's big projects each end with a hardware checklist. That step earns the label hardware-tested on your own bench.
Check your understanding (counts toward your progress)
What does the board switch on a page do?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Nothing on a page talks to your board.
No page pretends to be a microcontroller.
It changes what you read, not what is on your desk.
Why
Pick your board once and every board-specific block shows that board's version.
It is a reading choice.
A Python programmer with no electronics background wants a short route. Which one fits?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
That route starts at Chapter 9 and assumes the electronics chapters are known.
It covers batteries and sleep, assuming the basics.
Routes exist for experienced readers who want to skip what they know.
Why
The programmer route keeps the electronics chapters and skips the C++ primer.
They can program but know no electronics.
A sketch is labelled Arduino sketch Β· Uno R4 Minima, ESP32-S3. What has been proved about it?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
That would be hardware-tested. The label says it was compiled for those boards.
Compiling checks the code, never the wiring.
No page runs code in your browser.
Why
Each labelled sketch was compiled for the named boards. That proves it is valid code for them, not that it behaves correctly.
Which of the three claims does a board label make?
A page says the LED "should blink twice a second". What kind of statement is that?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Nobody ran it on your board.
Pages don't capture simulator output.
A description of the expected result can't check your wiring.
Why
Pages describe expected behaviour. Only your bench shows what really happens.
Has anyone watched your LED?
Practice: Modes, claims and routes (4 problems Β· doesn’t affect your progress)
What do you need for the Simulate mode?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
That is the Build mode.
Simulators are optional, free, and on your own account.
No instruments are needed to simulate.
Why
Simulate needs no parts: you open a free simulator yourself.
A browser and a free simulator you open
A sketch compiled cleanly for the ESP32-S3, but the serial window shows nothing. Which claim does that contradict?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
It did compile. Compiling only proves the code is valid for the board.
No host test covered the serial window.
Only a hardware test would have checked this.
Why
Compiled proves the code is valid, not that it works on your bench.
Compiling checks the code. What does it not check about your bench?
None; compiling only proves the code is valid
Which chapter does the beginner maker route skip?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
Breadboards and circuits are in every beginner route.
First firmware is in the beginner route.
Every route that starts at the beginning includes Chapter 0.
Why
Beginner maker: 0 to 5, 7, 8, 10, 11, 12, 16, 17. Chapter 6 isn't on it.
Read the beginner maker route's chapter list. Which of these numbers is missing from it?
Chapter 6
A simulated LED circuit works perfectly, but the same circuit on your breadboard stays dark. Which is the likeliest cause?
Right on try — credit. Right — the answer had already been shown, so no credit this time. Next try is worth Answer shown after three tries — this one no longer earns credit. You chose to see the answer — this one earns no credit.
The logic worked in the simulator, so look at what the simulator didn't model.
It compiled and ran in the simulator.
They usually agree; a disagreement points at your real parts or wiring.
Why
The simulator settled the logic. What's left is the real hardware: wiring, parts and cables.
The simulator has already shown the logic works. What does it not test?
List what is real on your bench but not in the simulation.
A real-part fault, such as a loose jumper