A resistor limits the flow of electric current in a circuit. It is a passive electronic component with a fixed resistance value measured in ohms (Ω). Every Arduino, ESP32, and Raspberry Pi project uses resistors to protect components, divide voltage, and control current levels.
Without a resistor, components like LEDs draw too much current and burn out. Microcontroller pins on an Arduino board can supply a maximum of 40mA per pin. A standard red LED needs about 15mA to light up safely. A 220Ω resistor between the Arduino pin and the LED limits the current to that safe level.
Resistors are found in every electronic device — from phone chargers to washing machines to industrial control panels. In Arduino and hobbyist circuits, they are the most used component after jumper wires. A typical beginner project uses between 2 and 10 resistors. Understanding what they do and how to choose the right value is the foundation of building any circuit.
How Does a Resistor Work?
A resistor works by converting electrical energy into heat as current passes through it. The material inside the resistor opposes the movement of electrons. This opposition is called resistance. Higher resistance means less current flows. Lower resistance means more current flows.
The relationship between voltage, current, and resistance follows Ohm’s Law:
V = I × R
V is voltage in volts (V). I is current in amps (A). R is resistance in ohms (Ω). You can rearrange this formula to find any of the three values:
R = V ÷ I (find resistance when you know voltage and current)
I = V ÷ R (find current when you know voltage and resistance)
V = I × R (find voltage when you know current and resistance)
For example, an Arduino digital pin outputs 5V. You connect an LED that drops 2V across it. The remaining 3V must be dropped across a resistor. If you want 15mA (0.015A) through the LED:
R = V ÷ I = 3 ÷ 0.015 = 200Ω
The nearest standard value is 220Ω. This is why 220Ω resistors are the most common resistor in Arduino starter kits. Every LED circuit you build on a 5V Arduino board will use this value.
Use Kunkune’s free Ohm’s Law calculator to calculate resistor values for your circuit.
What Is the Role of Resistors in Arduino Circuits?
Resistors serve four main roles in Arduino and electronics circuits. Each role either protects a component or controls a signal level.
Current limiting — The most common use. A 220Ω resistor in series with an LED limits current to a safe level. Without it, the LED draws too much current from the Arduino pin and burns out within seconds. Every LED circuit needs a current-limiting resistor. This applies to single LEDs, LED strips, and any component with a maximum current rating lower than what the power source can supply.
Pull-down and pull-up resistors — When a digital input pin on an Arduino is not connected to anything definite, it picks up electrical noise and gives random HIGH/LOW readings. This is called a floating pin. A 10kΩ pull-down resistor connects the pin to GND, keeping it at a stable LOW by default. A 10kΩ pull-up resistor connects the pin to 5V, keeping it at a stable HIGH by default. These are essential for button and switch circuits. Without them, your button readings are unreliable.
Getting the value right matters, too high and the input goes slow and noise-prone, too low and you waste current. Work it out in seconds with our pull-up resistor calculator or pull-down resistor calculator — both give the minimum, maximum and recommended value for your supply voltage.
Voltage dividers — Two resistors in series can divide a voltage into a lower value. This is used to read 3.3V sensors with a 5V Arduino, to step down 5V signals to 3.3V for ESP32 boards, or to read a battery voltage that exceeds the Arduino’s 5V analogue input limit. The output voltage depends on the ratio of the two resistor values.
You can use Voltage Divider calculator here
Signal conditioning — Resistors pair with capacitors to create RC filters that smooth noisy sensor readings. They set timing in oscillator circuits, bias transistors for switching motors on and off, and set gain in amplifier circuits. These are more advanced applications you will encounter as your projects grow beyond beginner level.
If you are building your first Arduino circuit, start with the LED blink project in our Getting Started with Arduino roadmap. It uses a 220Ω resistor as your first hands-on experience with current limiting.
How Do Resistors Protect Arduino Pins?
Each digital pin on an Arduino Uno can source or sink a maximum of 40mA. The total current across all pins must not exceed 200mA. If a component draws more than 40mA from a single pin, the pin can be permanently damaged.
A current-limiting resistor prevents this. By placing a resistor between the Arduino pin and the component, you control exactly how much current flows. The resistor absorbs the excess voltage as heat, keeping the current within the pin’s safe operating range.
This protection is especially important with LEDs. A red LED connected directly to a 5V pin with no resistor draws over 100mA in a brief spike before burning out. That spike can also damage the Arduino’s ATmega328P or RA4M1 microcontroller chip permanently. A 220Ω resistor reduces the current to approximately 15mA — safe for both the LED and the pin.
Resistors also protect Arduino analogue input pins. The analogue pins on an Uno read voltages from 0V to 5V. If a sensor outputs more than 5V, a voltage divider made from two resistors scales the voltage down to a safe range. Without this protection, the excess voltage can damage the ADC (analogue-to-digital converter) inside the microcontroller.
What Happens If You Use the Wrong Resistor?
Using a resistor with the wrong value changes the current in your circuit. The consequences depend on whether the value is too high or too low.
Resistor value too low — Too much current flows. An LED gets brighter than intended but may overheat and burn out. An Arduino pin may exceed its 40mA maximum and suffer permanent damage. A sensor may give incorrect readings because the signal levels are wrong.
Resistor value too high — Too little current flows. An LED appears dim or does not light up at all. A pull-up or pull-down resistor may not hold the pin at a stable voltage, causing intermittent false readings. A motor or relay may not activate because the control signal is too weak.
No resistor at all — The worst case. An LED connected directly to 5V without a resistor burns out almost instantly. A floating input pin with no pull-up or pull-down resistor gives completely random readings that make your program behave unpredictably.
The good news is that resistors are cheap and you can experiment. If your LED is too dim, try a lower resistance value. If it is too bright or hot, try a higher one. A basic selection of 220Ω and 10kΩ resistors covers most Arduino beginner projects. Both values are included in every Kunkune starter kit.
What Are the Different Types of Resistors?
Resistors come in several types based on their material and construction. Each type has different characteristics suited to different applications.
| Type | Tolerance | Power Rating | Temp Stability | Cost | Best For |
|---|---|---|---|---|---|
| Carbon Film | ±5% | ¼W – ½W | Moderate | Lowest | Arduino projects, hobby electronics, LED circuits |
| Metal Film | ±1% | ¼W – 1W | High | Low | Precision voltage dividers, audio, measurement |
| Wire-Wound | ±1% – ±5% | 5W – 50W+ | Very High | Medium | Power supplies, motor control, heater circuits |
| SMD (Surface-Mount) | ±1% – ±5% | ⅛W – ¼W | High | Lowest | Commercial PCBs, phones, laptops (not breadboard) |
| Potentiometer | ±10% – ±20% | ¼W – ½W | Low | Low | Volume controls, dimmer switches, Arduino analogue input |
Carbon film resistors — The most common type in hobby electronics and Arduino kits. A thin carbon film is deposited on a ceramic body and laser-trimmed to the correct resistance. They are cheap, widely available, and accurate enough for most beginner and intermediate projects. Tolerance is typically ±5%. Power rating is usually ¼W (0.25W).
Metal film resistors — A thin metal alloy layer on a ceramic body. More precise than carbon film with ±1% tolerance. The resistance value is more stable across temperature changes. Used in circuits that need accurate resistance values, like precision voltage dividers, audio equipment, and measurement instruments.
Wire-wound resistors — A resistance wire wrapped around an insulating core. These handle high power — from 5W to 50W or more. They are physically larger than film resistors and are used in power supplies, motor control circuits, and heater circuits. Not suitable for high-frequency applications because the wire coil creates inductance.
SMD (surface-mount) resistors — Tiny rectangular components soldered directly onto a circuit board without through-hole pins. Found inside commercial electronics like phones and laptops. Not commonly used in breadboard Arduino projects because they are too small to handle by hand without tweezers and a magnifying glass.
Variable resistors (potentiometers) — A resistor with an adjustable value controlled by turning a dial or moving a slider. A 10kΩ potentiometer is included in most Arduino starter kits. It sends a variable voltage to an analogue input pin, which is how beginners first learn about analogue-to-digital conversion. Turning the dial changes the resistance, which changes the voltage, which changes the number the Arduino reads.
Kunkune’s Arduino starter kits include carbon film resistors and potentiometers. For individual resistors and other components, browse our electronic components range.
How Do I Read Resistor Colour Codes?
Resistor colour codes are coloured bands printed on the body of a through-hole resistor. Each band represents a digit or multiplier that tells you the resistance value and tolerance. Learning to read colour codes lets you identify any resistor without a multimeter.
A standard 4-band resistor reads like this:
Band 1 — First digit
Band 2 — Second digit
Band 3 — Multiplier (number of zeros to add)
Band 4 — Tolerance (accuracy of the stated value)
The colour-to-number table:
| Colour | Digit | Multiplier | Tolerance |
|---|---|---|---|
| Black | 0 | ×1 | — |
| Brown | 1 | ×10 | ±1% |
| Red | 2 | ×100 | ±2% |
| Orange | 3 | ×1,000 | — |
| Yellow | 4 | ×10,000 | — |
| Green | 5 | ×100,000 | ±0.5% |
| Blue | 6 | ×1,000,000 | ±0.25% |
| Violet | 7 | ×10,000,000 | ±0.1% |
| Grey | 8 | — | ±0.05% |
| White | 9 | — | — |
| Gold | — | ×0.1 | ±5% |
| Silver | — | ×0.01 | ±10% |
The 5 resistor values you will use most in Arduino projects:
220Ω (red, red, brown, gold) — LED current limiting on 5V boards
330Ω (orange, orange, brown, gold) — LED current limiting on 3.3V boards like ESP32
1kΩ (brown, black, red, gold) — General purpose, transistor base resistor
4.7kΩ (yellow, violet, red, gold) — I2C pull-up, DS18B20 temperature sensor data line
10kΩ (brown, black, orange, gold) — Pull-down and pull-up resistors for buttons and switches
Use Kunkune’s free Resistor Colour Code Calculator to convert colour bands to values instantly. It supports 3, 4, 5, and 6-band resistors including tolerance and temperature coefficient.
Resistors in Series vs Parallel — What Is the Difference?
Resistors can be connected in two ways. The arrangement changes the total resistance in the circuit.
Series connection — Resistors are connected end to end in a single path. The total resistance is the sum of all individual values. Current flows through each resistor one after the other.
Two 220Ω resistors in series: Rtotal = 220 + 220 = 440Ω
Three 1kΩ resistors in series: Rtotal = 1,000 + 1,000 + 1,000 = 3,000Ω (3kΩ)
Series resistors increase total resistance and reduce current. In Arduino circuits, an LED and its current-limiting resistor are connected in series. The current flows through the resistor first, then through the LED, then to ground.
Parallel connection — Resistors are connected side by side across the same two points. The total resistance is always lower than the smallest individual resistor. Current splits between the parallel paths.
The formula for two resistors in parallel: Rtotal = (R1 × R2) ÷ (R1 + R2)
Two 220Ω resistors in parallel: Rtotal = (220 × 220) ÷ (220 + 220) = 110Ω
A 1kΩ and a 2kΩ in parallel: Rtotal = (1,000 × 2,000) ÷ (1,000 + 2,000) = 667Ω
Parallel resistors are used when you need a specific resistance value that is not available as a single standard component. They also increase the total power handling — two ¼W resistors in parallel can handle ½W combined.
What Is a Voltage Divider and Why Is It Useful?
A voltage divider is two resistors connected in series between a voltage source and ground. The output voltage is taken from the point between the two resistors. The output depends on the ratio of the two resistance values.
The formula: Vout = Vin × (R2 ÷ (R1 + R2))
For example, to divide 5V down to 3.3V for an ESP32 input using a 1.8kΩ (R1) and 3.3kΩ (R2) voltage divider:
Vout = 5 × (3,300 ÷ (1,800 + 3,300)) = 5 × 0.647 = 3.24V
This is close enough to 3.3V for most applications. Voltage dividers are used in Arduino projects for three common purposes:
Level shifting — Converting 5V signals to 3.3V for ESP32 and ESP8266 boards that cannot tolerate 5V on their input pins.
Battery monitoring — Reading a 9V or 12V battery voltage through the Arduino’s 5V analogue input. A voltage divider scales the battery voltage down to a safe range. The Arduino reads the scaled voltage and calculates the actual battery level in software.
Analogue sensors — A light-dependent resistor (LDR) paired with a fixed 10kΩ resistor forms a voltage divider that changes output based on light intensity. The Arduino reads this changing voltage on an analogue input pin. This is one of the simplest and most common sensor circuits in electronics.
For more on reading sensors with Arduino, browse our Arduino sensor range. To learn about I2C and SPI communication protocols used by digital sensors, read our I2C vs SPI guide.
How Do I Choose the Right Resistor for My Circuit?
Choosing the right resistor requires knowing two things: the resistance value your circuit needs and the power the resistor must handle safely.
Step 1 — Calculate the resistance value. Use Ohm’s Law: R = V ÷ I. For an LED circuit on a 5V Arduino pin with a red LED that drops 2V and needs 15mA:
R = (5 – 2) ÷ 0.015 = 200Ω → round up to 220Ω (nearest standard value)
Different colour LEDs have different forward voltage drops. Red and yellow LEDs drop about 2V. Green and blue LEDs drop about 3V. For a blue LED on a 5V Arduino pin at 15mA:
R = (5 – 3) ÷ 0.015 = 133Ω → round up to 150Ω
Step 2 — Check the power rating. The resistor must safely dissipate the heat generated by current flowing through it. Calculate power using: P = I² × R.
For the red LED example: P = 0.015² × 220 = 0.05W. A standard ¼W (0.25W) resistor handles this with plenty of margin. Most Arduino circuits use ¼W resistors because the currents involved are small.
For higher-power applications like motor control or power supply circuits, use 1W or 2W resistors. If the calculated power exceeds ¼W, upgrade to a higher-rated resistor or use multiple resistors in parallel to share the load.
For most Arduino beginner projects, you need only two resistor values: 220Ω for LEDs and 10kΩ for buttons. Both are included in every Kunkune starter kit. For a broader selection of resistors and electronic components, browse our electronic components range.
Frequently Asked Questions
What does a resistor do in a circuit?
A resistor limits the flow of electric current. It protects components like LEDs from drawing too much current, sets stable voltage levels using voltage dividers, and provides reliable input signals through pull-up and pull-down configurations. Every Arduino circuit uses at least one resistor.
Why are resistors used in Arduino circuits?
Arduino digital pins output 5V and can supply up to 40mA per pin. Most components need less current than this maximum. A resistor between the pin and the component limits current to a safe level. Without resistors, LEDs burn out, Arduino pins can be permanently damaged, and sensor readings are unreliable due to floating pins.
What size resistor do I need for an LED?
A 220Ω resistor is the standard choice for LEDs on a 5V Arduino board. It limits current to approximately 15mA, which is safe for most standard LEDs. For 3.3V boards like ESP32 and ESP8266, use a 100Ω or 150Ω resistor instead. For blue or green LEDs on 5V, use 150Ω because these LEDs have a higher forward voltage drop.
What is a pull-up or pull-down resistor?
A pull-up resistor connects an input pin to 5V through a 10kΩ resistor, keeping it at HIGH by default. A pull-down resistor connects the pin to GND through a 10kΩ resistor, keeping it at LOW by default. Both prevent floating pins that give random readings. Arduino has built-in pull-up resistors you can activate in code with pinMode(pin, INPUT_PULLUP) — this eliminates the need for an external 10kΩ resistor in many button circuits.
How does a resistor work?
A resistor opposes the flow of electrons by converting electrical energy into heat. The resistance value determines how much current flows for a given voltage, following Ohm’s Law: V = I × R. A higher resistance allows less current. A lower resistance allows more current.
Where can I buy resistors in the UK?
Kunkune stocks resistors and electronic components for Arduino projects. Starter kits include 220Ω and 10kΩ resistors along with a board, breadboard, LEDs, and sensors. Individual resistors and component packs are available in our electronic components range. All orders dispatched within 1 working day with delivery in 1–2 days. Free shipping over £25.
