🔧 Troubleshooting
Stuck, Agent? The two problems almost everyone hits — and how to fix them.
1. The code won’t upload
You hit Upload and it fails, hangs, or shows a red error. Check these in order:
a. Use the right USB port & cable
Make sure the board is plugged in with a dataUSB cable (some cables only charge — they won’t upload). In the Arduino editor, open Tools → Port: the right port is the one that appears when you plug the board in and disappears when you unplug it. Select that one.
b. Switch to the “Old Bootloader”
Our Nano boards usually need the old bootloader. In the Arduino editor go to Tools → Processor and choose ATmega328P (Old Bootloader). If the normal one failed, switch to Old Bootloader and upload again.
c. The CH340 driver must be v3.5, not v3.9
The newer v3.9 CH340 driver (sometimes called CH341) breaks uploads on these boards. You want v3.5. Download it here — this is the best source, with a working v3.5 installer:
⬇ Download the CH340 v3.5 driver (visualmicro.com) ↗
Step 1 — Check which version is installed
- Plug the board in.
- Press the Windows key, type Device Manager, and open it.
- Expand Ports (COM & LPT) and find USB-SERIAL CH340 (or CH341).
- Right-click it → Properties → the Driver tab.
- Read Driver Version. If it starts with 3.5you’re good. If it says 3.9, do Steps 2 and 3.
Step 2 — Delete the wrong (v3.9) driver
- On that same Driver tab, click Uninstall Device.
- In the pop-up, tick “Delete the driver software for this device”(or “Attempt to remove the driver”), then click Uninstall.
- Unplug the board.
Step 3 — Install v3.5
- Open the download link above and follow its instructions to get the v3.5 installer.
- Run the installer and click Install (if it shows an Uninstall first, uninstall once, then Install).
- Plug the board back in, then re-check the version in Device Manager — it should now read 3.5.
- Try uploading again. Stuck? Grab a teacher.
d. On the servo lesson, and a–c didn’t fix it? Try unplugging the servo
Check a–c above first— the driver/port/bootloader fix those almost always. But if it’s stuck on “Uploading…” only on the Servo Motor lesson and the rest is ruled out, the servo itself can be the problem: it pulls a big gulp of power the instant the board resets to upload, which can dip the voltage and break the upload.
- Unplug the servo’s power (the wire going to 5V, or just pull the whole servo) before you hit Upload.
- Upload the code. It should go through now.
- Plug the servo back in — it’ll start moving.
- Doing lots of uploads? Power the servo from a separate battery/5V supply (with its ground connected to the Arduino’s ground) so you don’t have to unplug it each time.
2. The circuit doesn’t work
The code uploaded fine, but nothing lights up or moves. It’s almost always the wiring:
a. Jumpers in the correct pins
Compare your board to the wiring picture for the lesson, wire by wire. Every jumper has to go to the exact pin shown — one row or one hole off means no connection.
b. The breadboard’s left side isn’t connected to the right side
The long power rails (the red + and blue − lines) on the left half of the breadboard are not joined to the ones on the right half. If your power and ground are on one side, your parts have to reach that same side — or run a jumper across to bridge them.
c. Make sure the circuit is complete
Electricity needs a full loop to flow. Find your voltage source (the 5V or 3V3 pin) and trace a path with your finger all the way back to GND (ground). If the path breaks anywhere — a missing jumper, a wrong row, a component leg that isn’t pushed in — the current can’t complete the loop and nothing happens. Find the break and close the loop.
Still stuck after all that? Grab a teacher. 🕵️
