Logo
Fast Delivery 1 – 2 days From UK
Best Prices in UK
60 Days Easy Free Returns
Free Shipping Over £25

Arduino Troubleshooting — How to Fix the Most Common Beginner Errors

Why Is My Arduino Not Working?

The most common Arduino problems have simple fixes. A sketch that won’t upload is usually caused by the wrong board or port selection, a charge-only USB cable, or a missing CH340 driver. An LED that won’t light up is almost always wired backwards or missing a ground connection. Sensor readings that jump around are typically caused by floating pins or loose wires. This guide covers every common error beginners hit, organised by symptom.

Work through the fix for your specific problem below. If you’re just setting up for the first time, start with our Arduino IDE setup guide which covers installation, board selection, and the CH340 driver in detail.

Why Won’t My Sketch Upload?

Upload failures are the single most common Arduino problem. The error message in the IDE output panel tells you what went wrong — read it before trying random fixes.

“Failed uploading: no upload port provided”

Cause: No port is selected in the IDE, or the board isn’t being detected by your computer.

Fix: Go to Tools → Port and select the port showing your Arduino. If no port appears, check these in order:

  1. Is the power LED on the board lit? If not, the cable isn’t providing power — try a different USB port on your computer.
  2. Try a different USB cable. Charge-only cables (common with phone chargers) carry power but no data. This is the number one cause of “no port” errors with new boards.
  3. If the LED is on but no port appears, you likely need the CH340 driver. Most Arduino-compatible boards from Kunkune use the CH340 USB chip. Windows 10/11 usually installs the driver automatically, but if it doesn’t, download it from wch-ic.com. See the CH340 section in our IDE setup guide for step-by-step instructions.
  4. On Linux, add your user to the dialout group: sudo usermod -a -G dialout $USER then log out and back in.

“avrdude: stk500_recv(): programmer is not responding”

Cause: The IDE can’t communicate with the bootloader on the board. The port is selected, but data isn’t getting through.

Fix: Check these:

  1. Correct board selected? Go to Tools → Board and make sure it matches your actual board (Arduino Uno for Uno-compatible clones).
  2. Is another program using the serial port? Close the Serial Monitor if it’s open in another IDE window. Close any other serial terminal software (PuTTY, CoolTerm, etc.).
  3. Try pressing the reset button on the board just before clicking Upload. On some boards, the timing of the reset needs to align with the upload attempt.
  4. Disconnect any wires from pins 0 and 1 (RX and TX). These pins are used for serial communication during upload — if a sensor or component is connected to them, it interferes with the upload process.

“Compilation error” (red text before upload even starts)

Cause: Your code has a syntax error. The sketch can’t compile, so it never reaches the upload stage.

Fix: Read the error message in the output panel. It tells you the line number and type of error. The most common ones:

  • Missing semicolon — every statement needs one at the end. The error often points to the line after the missing semicolon, not the line itself.
  • Mismatched braces — every { needs a matching }. Use Edit → Auto Format (Ctrl+T) to indent your code properly — mismatched braces become visually obvious.
  • Undeclared variable — you used a variable name that hasn’t been defined. Check for typos — ledpin and ledPin are different variables.
  • Missing library — if you see “No such file or directory” for a .h file, you need to install the library through Sketch → Include Library → Manage Libraries.

Why Doesn’t My LED Light Up?

If the circuit is wired but the LED stays dark, check these in order:

Is the LED the right way round?

LEDs only conduct current in one direction. The longer leg is the anode (positive) and goes toward the power source. The shorter leg is the cathode (negative) and goes toward ground. If you have them backwards, the LED simply won’t light — it won’t be damaged. Flip it around.

Is there a complete circuit path?

Current needs to flow from the Arduino pin, through the resistor, through the LED, and back to GND. If any part of that chain is broken — a missing jumper wire, a loose connection, a breadboard row mistake — no current flows and nothing lights up. Trace the circuit from pin to GND and verify every connection.

Is the correct pin selected in code?

If your LED is wired to pin 9 but your code says pinMode(13, OUTPUT), the LED won’t respond. Double-check that the pin number in your code matches the physical pin your wire is connected to.

Is the resistor value too high?

A 220Ω resistor is standard for a 5V LED circuit. If you accidentally used a 10kΩ resistor (brown-black-orange), the current is so low the LED appears off. Check the colour bands — 220Ω is red-red-brown.

Is the LED dead?

Rare, but possible. Test by connecting the LED directly between the Arduino’s 5V pin and GND through a 220Ω resistor. If it lights up, the LED is fine and the problem is in your circuit or code. If it still doesn’t light, replace the LED.

For more on how breadboard connections work, see our breadboard guide.

Why Are My Sensor Readings Wrong?

Readings jump around randomly

Cause: Floating pin. If an analogue input pin isn’t connected to anything definite, it picks up electrical noise and returns random values between 0 and 1023.

Fix: Make sure all three wires on your sensor are connected — power (5V), ground (GND), and signal (to the analogue pin). A missing ground wire is the most common cause. If you’re reading a digital input like a button, add a pull-down resistor (10kΩ to GND) or use INPUT_PULLUP mode.

Readings are stuck at 0

Cause: The signal wire isn’t making contact, or the sensor isn’t powered.

Fix: Check that the sensor’s VCC pin is connected to 5V (or 3.3V if the sensor requires it) and GND is connected to ground. Use the Serial Monitor to print raw analogRead() values — if they’re always 0, the analogue pin is seeing 0V, meaning no signal is reaching it.

Readings are stuck at 1023 (or 4095 on R4 boards)

Cause: The analogue pin is connected directly to 5V with no sensor in between, or the sensor’s signal wire is shorted to the power rail.

Fix: Check your wiring. The analogue pin should connect to the sensor’s signal output, not directly to 5V.

Temperature sensor reads wrong values

Cause: DHT11 sensors have an accuracy of ±2°C — they’re not precision instruments. If the reading is off by 2–3 degrees, that’s within spec. If it’s wildly wrong (showing 0°C or 255), the wiring or library is incorrect.

Fix: Verify the data pin connection and make sure you’re using the correct library for your sensor (DHT11 vs DHT22 — they use different timing). Add a 10kΩ pull-up resistor between the data pin and 5V if your module doesn’t have one built in.

Why Does the Serial Monitor Show Garbage Characters?

Cause: The baud rate in the Serial Monitor doesn’t match the baud rate in your code.

Fix: Check what value you passed to Serial.begin() in your sketch. If your code says Serial.begin(9600), set the Serial Monitor dropdown to 9600. If your code says Serial.begin(115200), set it to 115200. Mismatched baud rates produce garbled characters every time.

If the baud rates match and you still see garbage, close the Serial Monitor, press the reset button on the board, and reopen it. Some boards send startup noise that looks like garbage before the sketch begins running.

Why Does My Arduino Keep Resetting?

Cause: Power supply can’t deliver enough current. The Arduino resets when voltage drops below its operating threshold.

Fix: This typically happens when you connect a motor, servo, or LED strip that draws more current than USB can provide (500 mA maximum). Power hungry components need their own external power supply. Share the GND between the Arduino and the external supply, but don’t share the 5V pin — let each device draw from its own source.

If your Arduino resets randomly without any motors connected, check for short circuits on your breadboard. A stray wire bridging 5V and GND can cause the USB port to cut power as protection.

Why Does My Servo Twitch or Jitter?

Cause: Insufficient power or electrical noise on the signal line.

Fix: A single SG90 micro servo on USB power usually works for light loads. Under load (lifting something, holding position against force), the servo draws more current than USB provides, causing voltage drops and jitter. Power the servo from an external 5V supply. Connect the servo’s signal wire to the Arduino, share GND between Arduino and supply, but power the servo’s red wire from the external supply, not from the Arduino’s 5V pin.

If the jitter happens even without load, add a 100µF electrolytic capacitor across the servo’s power wires (positive to 5V, negative to GND) to smooth voltage spikes.

Why Does My Program Work Then Stop?

Cause: Running out of SRAM. The ATmega328P on the Uno has only 2 KB of RAM. Large arrays, many string variables, or heavy library usage can exhaust it.

Fix: Use the F() macro for constant strings to store them in flash instead of RAM:

Serial.println(F("This text is stored in flash"));

Check your memory usage after compiling — the IDE shows “Global variables use X bytes (Y%) of dynamic memory.” If Y is above 75%, you’re at risk of stack overflow during runtime. Reduce variable sizes, use byte instead of int where possible, and avoid String objects (they fragment memory). Use character arrays (char[]) instead.

Quick Reference: Error → Most Likely Fix

“No upload port provided” → Different USB cable, install CH340 driver

“Programmer is not responding” → Correct board selected, nothing on pins 0/1, press reset before upload

“Compilation error” → Read the error message, check semicolons and braces

LED doesn’t light → Flip LED, check resistor value, trace circuit to GND

Sensor reads 0 → Check signal wire and power connections

Sensor reads random values → Add pull-down resistor or connect ground wire

Serial Monitor garbage → Match baud rate in code and monitor

Board keeps resetting → External power for motors, check for short circuits

Servo jitters → External power supply, add decoupling capacitor

Program stops working → Use F() macro, reduce RAM usage

Frequently Asked Questions

Can I damage my Arduino by wiring something wrong?
Most wiring mistakes won’t damage the board. An LED wired backwards simply won’t light up. However, connecting 5V directly to GND (a short circuit) can damage the USB port or the board’s voltage regulator. Connecting a voltage higher than 5V to a digital or analogue pin can destroy the microcontroller. Always double-check power connections before plugging in the USB cable.
How do I know if my USB cable supports data?
If the board’s power LED lights up but no port appears in the Arduino IDE, the cable is likely charge-only. The easiest test is to try a different cable. Cables that came with external hard drives, printers, or Arduino kits almost always support data. Thin cables that came with cheap phone chargers are often charge-only.
Why does my Arduino work with one computer but not another?
The most common reason is a missing CH340 driver on the second computer. Each computer needs the driver installed independently. Windows 10/11 often installs it automatically, but not always. Download the driver from the WCH website and install it on the second computer.
What should I do if nothing in this guide fixes my problem?
Upload the basic Blink sketch (File → Examples → 01.Basics → Blink) with all external wires disconnected. If Blink works, the board is fine and the issue is in your circuit or code. If Blink fails, try a different USB cable, different USB port, and different computer. If none of those work, the board may be faulty — contact Kunkune for a replacement under the 60-day returns policy.
Where can I get help with Arduino problems in the UK?
The Arduino Forum (forum.arduino.cc) and Reddit’s r/arduino are active communities where you can post your specific error message and get help. For hardware issues with boards purchased from Kunkune, contact their support team — all boards come with a 60-day returns policy and orders are dispatched within 1 working day.

The Bottom Line

Most Arduino problems come down to five things: wrong port, bad cable, backwards LED, missing ground wire, or mismatched baud rate. Check those first. If you’re still stuck, add Serial.println() statements throughout your code to find exactly where things go wrong — the Serial Monitor is your best debugging tool. Head back to the Arduino beginner roadmap to continue building.