抵抗の直列接続と並列接続:公式と計算例
抵抗の直列接続と並列接続。R = R1 + R2と1/Rの公式、2本の抵抗の近道、直並列の回路の解き方、LEDの配線、手元にない抵抗値の作り方を解説します。
抵抗の直列接続と並列接続の計算とは、複数の抵抗を1つの合成抵抗にまとめ、回路全体の抵抗、電流、電圧を求めることです。ルールは2行で収まります。直列の抵抗は単純に足し(R = R1 + R2 + …)、並列の抵抗は逆数を足します(1/R = 1/R1 + 1/R2 + …)。直列の合計は常にいちばん大きい抵抗より大きく、並列の合計は常にいちばん小さい抵抗より小さくなります。この2つの公式があれば、つないだLEDの抵抗を選び、手元にない値を2本の抵抗で作り、直並列の回路を紙の上で解けます。
このガイドでは、まず2つの接続の違いを見て、次に2本の並列抵抗のための「和分の積」の近道、電流と電圧の分かれ方、電力の配分、直並列の回路のステップごとの解き方を見ていきます。そのあと、E12系列にない値の作り方、LEDを直列と並列のどちらで配線すべきかの判断、Arduino、ESP32、Raspberry Pi Picoでの直列回路の電圧の測定を学びます。結果をすばやく確かめるには直列・並列の抵抗計算ツールを、最も近い標準値を見つけるには標準値ツールを使ってください。

直列接続と並列接続とは?どう違う?
直列接続では、抵抗を鎖の輪のように端と端でつなぎます。電流の通り道は1つしかないので、鎖のすべての抵抗に同じ電流が流れ、電源の電圧はそれらの間で分けられます。並列接続では、各抵抗の両端を同じ2点につなぎます。道路がいくつもの車線に分かれるのと同じです。どの抵抗にも同じ電圧がかかり、電流は枝の間で分けられます。水道管で考えてみましょう。細い管を次々につなぐと水が流れにくくなるので抵抗は上がり、新しい管を横に並べると新しい通り道ができるので抵抗は下がります。
| 項目 | 直列 | 並列 |
|---|---|---|
| 公式 | R = R1 + R2 + R3 + … | 1/R = 1/R1 + 1/R2 + 1/R3 + … |
| 合計の抵抗 | いちばん大きい抵抗より大きい | いちばん小さい抵抗より小さい |
| 電流 | どの抵抗でも同じ | 抵抗に反比例して枝に分かれる |
| 電圧 | 抵抗に比例して分かれる | どの抵抗でも同じ |
| 1本の抵抗が壊れたら | 回路全体が止まる | その枝だけが止まる |
| n本の等しい抵抗(R) | n × R | R / n |
| 主な用途 | 分圧回路、LEDの電流制限、値を大きくする | 値を小さくする、電力定格を上げる、LEDの枝を分ける |
直列抵抗の計算:R = R1 + R2 + …
直列の抵抗の合成値は、単に値の合計です。220 Ωと330 Ωを端と端でつなげば550 Ω、1 kΩを3本つなげば3 kΩになります。注意するのは単位だけです。4.7 kΩと330 Ωを足すときは、両方をオームに直す(4700 + 330 = 5030 Ω)か、両方をキロオームで書きます(4.7 + 0.33 = 5.03 kΩ)。直列では大きいほうの抵抗が支配的です。10 kΩに100 Ωを足しても、合計は1%しか変わりません。そのため直列の抵抗は、値を少しずつ上に調整するのにとても便利です。
直列の回路では、電源の電圧が値に比例して抵抗の間で分けられます。Vx = V × Rx / Rtotalです。たとえば5 Vに1 kΩ、2.2 kΩ、3.3 kΩを直列につなぐと合計6.5 kΩで、5 / 6.5 ≈ 0.77 mAが流れます。この電流で1 kΩに0.77 V、2.2 kΩに1.69 V、3.3 kΩに2.54 Vが落ち、3つを足すとやはり5 Vになります。この配置の2本の抵抗の版を分圧回路と呼び、センサーを読んだり、5 Vの信号を3.3 Vに下げたりする基本になります。詳しくは分圧回路のガイドを読むか、すばやく計算するには分圧回路ツールを使ってください。
並列抵抗の計算:1/R = 1/R1 + 1/R2 + …
並列では、各抵抗が電流の新しい通り道を開きます。そのため抵抗そのものではなく、それぞれがどれだけ電流を通しやすいかを表す逆数を足します。この逆数をコンダクタンス(G = 1/R、単位はジーメンス)と呼びます。計算は3ステップです。各抵抗の逆数を取り、逆数を足し、その合計の逆数を取ります。たとえば1 kΩ、2.2 kΩ、4.7 kΩを並列にすると、キロオームで計算して1/1 + 1/2.2 + 1/4.7 = 1 + 0.4545 + 0.2128 = 1.6673、その逆数は1 / 1.6673 ≈ 0.600 kΩ、つまり約600 Ωです。予想どおり、結果はいちばん小さい抵抗の1 kΩより小さくなります。
一方、並列では小さいほうの抵抗が支配的です。10 kΩと100 Ωを並列にすると99 Ωになり、大きい抵抗はほとんどないも同然です。これで値を少しずつ下に調整できます。10倍大きい抵抗を並列に入れると、値は約9%下がります(R ∥ 10R = R × 10/11)。n本の同じ抵抗を並列にすると結果はR / nです。10 kΩ 2本で5 kΩ、1 kΩ 4本で250 Ωになります。
2本の抵抗の近道:和分の積
並列の抵抗が2本だけなら、逆数を使わずに済みます。R = (R1 × R2) / (R1 + R2)、つまり「和分の積」のルールです。220 Ωと330 Ωなら72,600 / 550 = 132 Ω、1 kΩと2.2 kΩなら2.2 / 3.2 = 0.6875 kΩ = 687.5 Ωです。この公式が使えるのは2本の抵抗のときだけです。3本以上の並列では、まず2本をまとめ、その結果と3本目に再び和分の積を使うか、1/Rの公式を直接使ってください。下の表は、ブレッドボードで最もよく出会う組み合わせの結果です。
| R1 | R2 | 直列(R1 + R2) | 並列(R1 ∥ R2) |
|---|---|---|---|
| 100 Ω | 100 Ω | 200 Ω | 50 Ω |
| 220 Ω | 220 Ω | 440 Ω | 110 Ω |
| 220 Ω | 330 Ω | 550 Ω | 132 Ω |
| 1 kΩ | 1 kΩ | 2 kΩ | 500 Ω |
| 1 kΩ | 2.2 kΩ | 3.2 kΩ | 687.5 Ω |
| 4.7 kΩ | 4.7 kΩ | 9.4 kΩ | 2.35 kΩ |
| 10 kΩ | 10 kΩ | 20 kΩ | 5 kΩ |
| 10 kΩ | 100 Ω | 10.1 kΩ | 99 Ω |
電流と電圧の分かれ方
直列の回路では電流がどこでも同じで、電圧は抵抗に正比例して分かれます。いちばん大きい抵抗にいちばん大きい電圧がかかります。並列の回路はその逆で、どの枝でも電圧は同じ、電流は抵抗に反比例して分かれるので、いちばん小さい抵抗が最も多くの電流を引きます。2つの並列の枝では、分流の公式はI1 = I × R2 / (R1 + R2)です。分数の上にあるのは自分ではなく、もう一方の枝の抵抗であることに注意してください。たとえば5 Vに1 kΩと4.7 kΩを並列にすると824.6 Ωになり、電源から6.06 mAを引きます。そのうち6.06 × 4.7 / 5.7 = 5 mAが1 kΩを、残りの1.06 mAが4.7 kΩを流れます。各枝をオームの法則(5 V / R)で個別に計算しても、まったく同じ値になります。
電力にも同じ分かれ方が当てはまり、どの抵抗が熱くなるかを決めます。直列では同じ電流が流れるので、P = I² × Rより大きいほうの抵抗がより多くの電力を消費します。並列では電圧が同じなので、P = V² / Rより小さいほうの抵抗がより熱くなります。下の表は、同じ2本の抵抗を5 Vで直列と並列に配線したとき、負荷がどれほど違うかを示しています。
| 接続 | 抵抗 | 電流 | 電圧 | 電力 |
|---|---|---|---|---|
| 直列 | 100 Ω | 4.55 mA | 0.45 V | 2.1 mW |
| 直列 | 1 kΩ | 4.55 mA | 4.55 V | 20.7 mW |
| 並列 | 100 Ω | 50 mA | 5 V | 250 mW(1/4 Wの限界) |
| 並列 | 1 kΩ | 5 mA | 5 V | 25 mW |
直列と並列の接続は、電力定格を上げる方法でもあります。等しい1/4 Wの抵抗2本は、直列でも並列でも合計1/2 Wに耐えられます。電力が2本に均等に分かれるからです。たとえば1/2 Wの110 Ωが必要なら、220 Ωを2本並列にできます。100 Ωを4本、2本ずつ直列にした組を並列につなぐと、値は100 Ωのままで、1 Wに耐えられるようになります。値が等しくなければ電力も均等には分かれないので、最も負荷の大きい抵抗を個別に計算する必要があります。
直並列の回路をステップごとに解く
実際の回路は、たいてい直列と並列の接続を組み合わせています。例を見てみましょう。12 VのACアダプターからの電流は、まずR1 = 100 Ωを流れ、そこで2つの枝に分かれます。1つ目の枝にはR2 = 330 ΩとR3 = 270 Ωが直列にあり、2つ目の枝にはR4 = 1.2 kΩだけがあります。2つの枝は再び合流してGNDに戻ります。方法はいつも同じです。いちばん内側のグループから始めて回路を1本の抵抗にまとめ、そこから逆にたどって電流と電圧を分けていきます。
- 内側の直列のグループをまとめる:R2 + R3 = 330 + 270 = 600 Ω。1つ目の枝は600 Ωの抵抗1本のように振る舞います。
- 並列の枝をまとめる:600 Ω ∥ 1200 Ω = (600 × 1200) / (600 + 1200) = 720,000 / 1800 = 400 Ω。
- 残りの直列の抵抗を足す:Rtotal = R1 + 400 = 100 + 400 = 500 Ω。
- 合計の電流を求める:I = V / R = 12 / 500 = 0.024 A = 24 mA。この電流はすべてR1を流れます。
- 電圧を分ける:R1で24 mA × 100 Ω = 2.4 Vが落ち、並列のブロックには12 − 2.4 = 9.6 Vが残ります。
- 枝の電流を求める:1つ目の枝は9.6 / 600 = 16 mA、2つ目は9.6 / 1200 = 8 mAを引きます。16 + 8 = 24 mAなので、合計の電流と合っています。
- 枝の中の電圧を求める:R2で16 mA × 330 Ω = 5.28 V、R3で16 mA × 270 Ω = 4.32 Vが落ち、合わせるとやはり9.6 Vになります。
| 抵抗 | 値 | 電流 | 電圧 | 電力 |
|---|---|---|---|---|
| R1 | 100 Ω | 24 mA | 2.4 V | 57.6 mW |
| R2 | 330 Ω | 16 mA | 5.28 V | 84.5 mW |
| R3 | 270 Ω | 16 mA | 4.32 V | 69.1 mW |
| R4 | 1.2 kΩ | 8 mA | 9.6 V | 76.8 mW |
| 合計 | 500 Ω | 24 mA | 12 V | 288 mW |
結果は2つの法則で確かめられます。電源からGNDまでのどの経路でも、電圧の合計は12 Vでなければなりません。2.4 + 5.28 + 4.32 = 12 V、2.4 + 9.6 = 12 Vです。また、接続点に入る電流は出ていく電流と等しくなければなりません。24 mA = 16 mA + 8 mAです。これがキルヒホッフの電圧則と電流則で、キルヒホッフの法則のガイドで詳しく説明しています。最後の確認は電力です。4本の抵抗は合計288 mWを消費し、これは電源が供給する12 V × 24 mA = 288 mWとちょうど一致します。どの抵抗も1/4 Wを大きく下回っているので、標準の抵抗で大丈夫です。
手元にない抵抗値を作る方法
抵抗はあらゆる値で作られているわけではなく、E系列と呼ばれる標準の刻みで売られています。最も一般的なE12には、1桁あたり12の値があります。10、12、15、18、22、27、33、39、47、56、68、82(とその10倍、100倍、1000倍…)です。E24系列は、その間に11、13、16、20、24、30、36、43、51、62、75、91を加えます。計算で300 Ωや4 kΩが出たのにキットにその値がない場合、選択肢は2つです。最も近い標準値に丸めるか、2本の抵抗を直列か並列に配線してちょうどの値を作るかです。最も近い標準値は標準値ツールでわかります。
| 欲しい値 | 直列での解決法 | 並列での解決法 |
|---|---|---|
| 200 Ω | 100 Ω + 100 Ω = 200 Ω | 220 Ω ∥ 2.2 kΩ = 200 Ω |
| 300 Ω | 150 Ω + 150 Ω = 300 Ω | 330 Ω ∥ 3.3 kΩ = 300 Ω |
| 2 kΩ | 1 kΩ + 1 kΩ = 2 kΩ | 2.2 kΩ ∥ 22 kΩ = 2 kΩ |
| 4 kΩ | 3.9 kΩ + 100 Ω = 4 kΩ | 4.7 kΩ ∥ 27 kΩ ≈ 4.003 kΩ(+0.08%) |
| 5 kΩ | 4.7 kΩ + 270 Ω = 4.97 kΩ(−0.6%) | 10 kΩ ∥ 10 kΩ = 5 kΩ |
| 6 kΩ | 2.7 kΩ + 3.3 kΩ = 6 kΩ | 10 kΩ ∥ 15 kΩ = 6 kΩ |
| 7.5 kΩ | 6.8 kΩ + 680 Ω = 7.48 kΩ(−0.27%) | 15 kΩ ∥ 15 kΩ = 7.5 kΩ |
表からある規則が見えてきます。抵抗にその10倍の値の抵抗を並列に入れると、ちょうど元の10/11になります。そのため220 Ω ∥ 2.2 kΩ = 200 Ω、330 Ω ∥ 3.3 kΩ = 300 Ωがぴったりの値になります。許容差も忘れないでください。5%の抵抗を2本組み合わせても、最悪の場合は結果がやはり5%ずれることがありますが、誤差が一部打ち消し合うこともよくあります。そのため0.1%の計算の差は、抵抗自体の許容差に比べれば無視できます。下のプログラムは10 Ω〜8.2 MΩのE12のすべての組み合わせを試し、目標に最も近い直列と並列の組をシリアルモニタに表示します。
1// Hedef değere en yakın seri / paralel E12 çiftini bulur
2// Finds the series / parallel E12 pair closest to a target value
3const float E12[12] = {1.0, 1.2, 1.5, 1.8, 2.2, 2.7, 3.3, 3.9, 4.7, 5.6, 6.8, 8.2};
4const float TARGET = 4000.0; // istenen direnç (ohm) / wanted resistance (ohms)
5const int COUNT = 72; // 10 ohm ... 8.2 Mohm, 6 onluk / 6 decades
6
7float valueAt(int i) { // i. standart değer / i-th standard value
8 float decade = 10.0;
9 for (int d = 0; d < i / 12; d++) decade *= 10.0;
10 return E12[i % 12] * decade;
11}
12
13void printPair(const char *label, const char *sign, float a, float b, float r) {
14 Serial.print(label);
15 Serial.print(a, 0);
16 Serial.print(sign);
17 Serial.print(b, 0);
18 Serial.print(" = ");
19 Serial.print(r, 1);
20 Serial.print(" ohm, hata / error: ");
21 Serial.print((r - TARGET) / TARGET * 100.0, 2);
22 Serial.println(" %");
23}
24
25void setup() {
26 Serial.begin(9600);
27 while (!Serial) {} // Pico gibi USB'li kartlarda Seri Monitör'ü bekle / wait for the Serial Monitor on native USB boards like the Pico
28 float bestS = 0, sA = 0, sB = 0; // en iyi seri / best series
29 float bestP = 0, pA = 0, pB = 0; // en iyi paralel / best parallel
30
31 for (int i = 0; i < COUNT; i++) {
32 for (int j = i; j < COUNT; j++) {
33 float a = valueAt(i);
34 float b = valueAt(j);
35 float s = a + b; // seri: R1 + R2 / series
36 float p = a * b / (a + b); // paralel: çarpım / toplam / parallel: product over sum
37 if (fabs(s - TARGET) < fabs(bestS - TARGET)) { bestS = s; sA = a; sB = b; }
38 if (fabs(p - TARGET) < fabs(bestP - TARGET)) { bestP = p; pA = a; pB = b; }
39 }
40 }
41 printPair("Seri / Series: ", " + ", sA, sB, bestS);
42 printPair("Paralel / Parallel: ", " || ", pA, pB, bestP);
43}
44
45void loop() {
46}TARGETを4000のままにすると、シリアルモニタに「100 + 3900 = 4000.0 ohm」と「4700 || 27000 = 4003.2 ohm, hata / error: 0.08 %」の行が表示されます。プログラムはsetup()の中で一度だけ計算するので、結果をもう一度見るにはボードをリセットしてください。シリアルモニタを9600ボーにするのも忘れないでください。コードはハードウェアをまったく使わないので、Arduino Uno、Nano、ESP32、ArduinoのコアでプログラムしたRaspberry Pi Picoでそのまま動きます。PicoのようにUSBがプロセッサーに直接つながっているボードでは、while (!Serial)の行がシリアルモニタが開くまでプログラムを待たせるので、一度しか表示されない結果を見逃しません。UnoやESP32では、この行はまったく待ちません。
LEDは直列と並列のどちらで配線すべき?
複数のLEDを使う場合、選択肢は2つあります。5 Vや3.3 Vで動くボードでは、LEDごとに専用の抵抗を付け、そのLEDと抵抗の組を並列に配線するのが最も安全です。1本の共通の抵抗の後ろに複数のLEDを並列に配線するのは絶対にやめてください。同じ色、同じ型番のLEDでも、順方向電圧(Vf)は数十ミリボルト違います。順方向電圧がいちばん低いLEDが電流の大部分を受け取って熱くなり、熱くなると順方向電圧がさらに下がります。その結果、1つのLEDだけがほかよりずっと明るく光り、やがて壊れます。
一方、直列ではすべてのLEDに同じ電流が強制的に流れます。そのため明るさがそろい、抵抗は1本で済みます。公式はLEDの数とともに大きくなります。R = (Vs − n × Vf) / Iです。たとえば12 VのACアダプターで白のLED(Vf ≈ 3.1 V)を3個点けるには、R = (12 − 9.3) / 0.02 = 135 Ωになります。次の標準値の150 Ωなら、電流は約18 mAです。既製の12 VのLEDテープはまさにこの方法で作られています。3個のLEDと抵抗1本が直列のグループになり、このグループがテープに沿って並列につながっています。直列で配線する条件は、電源電圧がLEDの順方向電圧の合計よりはっきり高いことです。Arduinoの5 Vで赤のLEDを2個(2 × 2 V = 4 V)点けると、抵抗に残るのは1 Vだけで、順方向電圧のわずかな違いで電流が最大20%変わります。ESP32やPicoの3.3 Vでは、赤のLED 2個を直列にするとまったく点きません。
| 電源 | LED | 接続 | 抵抗 | 電流 |
|---|---|---|---|---|
| 5 V(Arduinoのピン) | 赤1個 | LED1個 + 抵抗 | 330 Ω | ≈ 9 mA |
| 5 V(Arduinoのピン) | 赤2個 | 直列、抵抗1本 | 100 Ω | ≈ 10 mA(余裕は1 Vだけ) |
| 5 V(Arduinoのピン) | 赤2個 | 並列、LEDごとに抵抗 | 2 × 330 Ω | 合計≈ 18 mA |
| 3.3 V(ESP32、Pico) | 赤2個 | 直列 | — | 点かない:4 V > 3.3 V |
| 12 Vのアダプター(トランジスタ経由) | 白3個 | 直列、抵抗1本 | 150 Ω | ≈ 18 mA |
| 12 Vのアダプター | 白3個 | 並列、共通の抵抗1本 | — | 誤り:電流が均等に分かれない |
Arduinoで直列回路の電圧の分かれ方を測る
公式が本当に正しいことを確かめる最善の方法は、測ることです。ブレッドボードに1 kΩ、2.2 kΩ、3.3 kΩの3本の抵抗を直列に配線します。鎖の上端を電源のピンに、下端をGNDにつなぎます。R1とR2がつながる点(接続点A)を1つ目のアナログ入力に、R2とR3がつながる点(接続点B)を2つ目のアナログ入力につなぎます。ボードは両方の接続点の電圧を読み、その差から各抵抗の電圧を求め、計算値と並べて結果を表示します。
| 回路の点 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| R1の上端(電源) | 5V | 3V3 | 3V3(OUT)、36番ピン |
| 接続点A(R1とR2の接続部) | A0 | GPIO 34 | GP26(ADC0)、31番ピン |
| 接続点B(R2とR3の接続部) | A1 | GPIO 35 | GP27(ADC1)、32番ピン |
| R3の下端 | GND | GND | GND、38番ピン |
1// Seri devrede gerilim paylaşımı / Voltage sharing in a series circuit
2// 5V -> R1 (1k) -> A0 -> R2 (2.2k) -> A1 -> R3 (3.3k) -> GND
3const float V_SUPPLY = 5.0; // besleme gerilimi / supply voltage
4const float R1_OHM = 1000.0; // üst direnç / top resistor
5const float R2_OHM = 2200.0; // orta direnç / middle resistor
6const float R3_OHM = 3300.0; // alt direnç / bottom resistor
7const int PIN_A = A0; // R1-R2 birleşimi / R1-R2 junction
8const int PIN_B = A1; // R2-R3 birleşimi / R2-R3 junction
9
10void setup() {
11 Serial.begin(9600);
12}
13
14void loop() {
15 float vA = analogRead(PIN_A) * V_SUPPLY / 1023.0; // A noktası / node A
16 float vB = analogRead(PIN_B) * V_SUPPLY / 1023.0; // B noktası / node B
17
18 float rTotal = R1_OHM + R2_OHM + R3_OHM; // seri: R = R1 + R2 + R3 / series total
19 float iCalc = V_SUPPLY / rTotal * 1000.0; // hesaplanan akım (mA) / calculated current (mA)
20 float iMeas = (V_SUPPLY - vA) / R1_OHM * 1000.0; // R1 üzerinden ölçülen akım (mA) / current measured over R1 (mA)
21
22 // Her direncin gerilimi: ölçülen ve hesaplanan / Voltage of each resistor: measured and calculated
23 Serial.print(F("V_R1 = "));
24 Serial.print(V_SUPPLY - vA, 2);
25 Serial.print(F(" V (")); Serial.print(iCalc * R1_OHM / 1000.0, 2);
26 Serial.print(F(") V_R2 = "));
27 Serial.print(vA - vB, 2);
28 Serial.print(F(" V (")); Serial.print(iCalc * R2_OHM / 1000.0, 2);
29 Serial.print(F(") V_R3 = "));
30 Serial.print(vB, 2);
31 Serial.print(F(" V (")); Serial.print(iCalc * R3_OHM / 1000.0, 2);
32 Serial.println(F(")"));
33
34 Serial.print(F("I hesap / calc = "));
35 Serial.print(iCalc, 3);
36 Serial.print(F(" mA I olcum / measured = "));
37 Serial.print(iMeas, 3);
38 Serial.println(F(" mA"));
39 Serial.println();
40 delay(2000);
41}5 Vでは回路の合計の抵抗は6.5 kΩ、電流は0.769 mAです。シリアルモニタではR1に約0.77 V、R2に1.69 V、R3に2.54 Vが表示されるはずです。かっこ内の値は計算結果です。測った電流はR1の電圧を1 kΩで割ったものです。直列の回路ではどの抵抗にも同じ電流が流れるので、この1つの測定で十分です。小さな差は、主に抵抗の1〜5%の許容差によるものです。ArduinoのADCの基準は同じ5 Vのラインなので、USBの電圧が4.9 Vや5.1 Vでも比率は変わりませんが、テスターで測る絶対的な電圧はその分違うことがあります。キロオームの範囲の値を選んだのにも理由があります。Arduino UnoのADCは、測る点のインピーダンスが約10 kΩ未満であることを想定していて、1 MΩの抵抗で作った鎖では値が不安定になります。
ESP32とRaspberry Pi Picoで同じ実験をする
ESP32では同じ回路を3V3ピンから給電し、2つの接続部をGPIO 34とGPIO 35につなぎます。これらのピンは入力専用でADC1のユニットに属し、Wi-Fiがオンの間も動き続けます。コードでは、V_SUPPLYを3.3に、PIN_AとPIN_Bを34と35にし、analogRead(...) * V_SUPPLY / 1023.0の式をanalogReadMilliVolts(PIN_A) / 1000.0とanalogReadMilliVolts(PIN_B) / 1000.0に置き換えます。この関数はESP32の工場でのキャリブレーションを使って電圧を直接ミリボルトで返し、初期設定の11 dBの減衰ではおよそ150〜3100 mVを測れます。3.3 Vでは電流は0.508 mAに下がり、接続点Aで約2.79 V、接続点Bで1.68 Vが表示されるはずです。この測定は電源に対してレシオメトリックではないので、V_SUPPLYをテスターで3V3ピンを測った実際の電圧にすると、結果がより正確になります。Raspberry Pi Picoでは、同じ実験をMicroPythonで次のように書きます。
1from machine import ADC
2import time
3
4V_SUPPLY = 3.3 # Pico 3V3(OUT) gerilimi / Pico 3V3(OUT) voltage
5R1, R2, R3 = 1000, 2200, 3300 # seri dirençler (ohm) / series resistors (ohms)
6adc_a = ADC(26) # GP26 = ADC0, A noktası / node A
7adc_b = ADC(27) # GP27 = ADC1, B noktası / node B
8
9r_total = R1 + R2 + R3 # R = R1 + R2 + R3
10i_calc = V_SUPPLY / r_total * 1000 # hesaplanan akım (mA) / calculated current (mA)
11
12while True:
13 v_a = adc_a.read_u16() * V_SUPPLY / 65535
14 v_b = adc_b.read_u16() * V_SUPPLY / 65535
15 i_meas = (V_SUPPLY - v_a) / R1 * 1000 # R1 üzerinden ölçülen akım / current measured over R1
16 print("V_R1 = {:.2f} V V_R2 = {:.2f} V V_R3 = {:.2f} V".format(V_SUPPLY - v_a, v_a - v_b, v_b))
17 print("I hesap / calc = {:.3f} mA I olcum / measured = {:.3f} mA".format(i_calc, i_meas))
18 time.sleep(2)PicoのADCはread_u16()で0〜65535の値を返し、基準は3.3 Vのラインなので、生の値に3.3を掛けて65535で割れば電圧になります。GP26とGP27はPicoのADC0とADC1のチャンネルです。Picoの準備がまだなら、Raspberry Pi Picoとは?のThonnyの手順に従ってください。3つのボードどれでも同じ姿が見えます。どの抵抗でも電流は同じで、電圧は値に比例し、合計すると電源電圧になります。
よくある間違いと解決法
| 間違い | 起きること | 正しいやり方 |
|---|---|---|
| 並列の計算で合計の逆数を取らない | 1 kΩ ∥ 1 kΩが「2」になる | 合計の逆数を取る:1 / 2 = 0.5 kΩ = 500 Ω |
| 3本の抵抗に一度に和分の積を使う | 単位すら合わない意味のない結果 | まず2本をまとめ、その結果を3本目とまとめる |
| 同じ計算でkΩとΩを混ぜる | 1 k + 220 = 221のような大きな誤り | すべてオームに直す:1000 + 220 = 1220 Ω |
| 抵抗の両足をブレッドボードの同じ列に挿す | 抵抗がショートして、ないのと同じになる | 足を別々の列に挿す |
| 回路に入ったまま抵抗を測る | 並列の経路のせいで実際より低く表示される | 電源を切り、片方の足を外して測る |
| 並列のLEDに共通の抵抗を1本使う | 1つのLEDだけが明るくなりすぎ、やがて壊れる | LEDごとに専用の抵抗を付ける |
| 電力の分かれ方を計算しない | 並列の枝の小さい抵抗が過熱して黒ずむ | 抵抗ごとにP = V² / RかP = I² × Rを計算する |
直列と並列の抵抗を使ったプロジェクトアイデア
- 信号機:赤、黄、緑のLEDを別々の抵抗で別々のピンにつなぎます。LEDと抵抗の組がそれぞれ独立した枝で動きます。作り方はArduinoの信号機のガイドにあります。
- 1本のアナログピンで5つのボタン:直列の抵抗でラダーを作ります。ボタンごとに違う電圧がA0に入り、analogReadでどれが押されたかがわかります。基本はArduinoに押しボタンをつなぐ方法を参照してください。
- ナイトライト:LDRを固定抵抗と直列に配線して分圧回路にし、暗くなるとLEDを自動で点けます。詳しくはLDR光センサーのガイドにあります。
- デジタル電圧計:既製の電圧センサーモジュールは30 kΩと7.5 kΩの分圧回路で、Arduinoが最大25 Vまで測れるようにしています。7.5 kΩがなければ、15 kΩを2本並列にしてください。プロジェクトはArduinoの電圧計のガイドにあります。
- RGB LEDでの色の混合:赤、緑、青のチャンネルは順方向電圧が違うので、それぞれに別の抵抗を計算します。例はRGB LEDのガイドにあります。
- 電池残量の表示:4.2 Vのリチウムイオンセルの電圧を等しい100 kΩの抵抗2本で半分にし、ESP32のアナログ入力で読みます。これほど大きな値なら電池から引くのはわずか21 µAで、入力に100 nFのコンデンサを付けると値が安定します。
直列と並列の抵抗の計算は、オームの法則の次の自然なステップです。まず回路を1本の合成抵抗にまとめ、そこから電流と電圧を再び分けていきます。この2つの公式が腑に落ちれば、手元にない値を作り、つないだLEDを正しく配線し、どの抵抗が熱くなるかを前もって知ることができます。基本を復習するにはオームの法則と抵抗とは?を読んでください。BlueGraysアプリには、Arduino、ESP32、Pico用のLEDの点滅、2つのLED、信号機、流れるライト、LDRでの明るさの測定のプロジェクトが、ステップごとの回路図とコード付きで揃っています。
よくある質問
直列と並列の抵抗はどう計算する?
直列の抵抗は足し合わせます。R = R1 + R2 + …です。並列の抵抗は逆数を足し(1/R = 1/R1 + 1/R2 + …)、その合計の逆数が合成抵抗になります。たとえば1 kΩと2.2 kΩは、直列で3.2 kΩ、並列で約687 Ωです。
2本の並列抵抗はどう計算する?
2本なら「和分の積」の近道が使えます。R = (R1 × R2) / (R1 + R2)です。たとえば220 Ωと330 Ωを並列にすると72,600 / 550 = 132 Ωになります。等しい抵抗2本を並列にすると、ちょうど1本の半分の値になります。
並列にすると合計の抵抗が下がるのはなぜ?
並列に加えた抵抗はそれぞれ電流の新しい通り道を開くので、同じ電圧でも電源から引く電流が増えます。コンダクタンス(1/R)が足し合わされるので、合成抵抗は常にいちばん小さい抵抗よりも小さくなります。10 kΩと100 Ωを並列にすると約99 Ωです。
直列の回路では電流と電圧はどう分かれる?
直列の回路には通り道が1つしかないので、どの抵抗でも電流は同じです。電圧は抵抗に比例して分かれます。Vx = V × Rx / Rtotalです。5 Vに1 kΩと4 kΩを直列にすると、1 kΩに1 V、4 kΩに4 Vが落ちます。
LEDは直列と並列のどちらで配線すべき?
5 Vや3.3 Vで動くボードでは、LEDごとに専用の抵抗を付け、その組を並列に配線するのが最も安全です。電源電圧がLEDの順方向電圧の合計よりはっきり高い場合、たとえば12 Vで白のLED 3個なら、抵抗1本で直列に配線できます。並列のLEDの前に共通の抵抗を1本だけ入れるのは絶対にやめてください。電流が均等に分かれません。
手元にない抵抗値はどうやって作る?
2本以上の抵抗を直列に配線すると値が大きくなり、並列に配線すると小さくなります。たとえば5 kΩには10 kΩを2本並列に、4 kΩには3.9 kΩと100 Ωを直列にします。抵抗にその10倍の値の抵抗を並列に入れると元の10/11になるので、330 Ω ∥ 3.3 kΩはちょうど300 Ωになります。
この記事を読んだ後に作れるプロジェクト
全プロジェクトを見る
LEDの点滅
電子工作の第一歩は、1個のLEDを点けたり消したりすることです。Arduinoで短い間隔で点灯と消灯を繰り返すと、LEDが素早く点滅します。ボードが光を制御する仕組みを最もシンプルな形で確かめ、これから取り組むプロジェクトの基礎を身につけます。

2個のLEDを点灯
2個のLEDが素早く交互に点滅します。一方が点くともう一方が消え、まるでボールを投げ合っているようです。ArduinoがそれぞれのLEDを5分の1秒ずつ点灯させ、次のLEDに切り替えます。1個のLEDの次に、複数の光をまとめて制御する方法を学ぶのに最適なステップです。

信号機
毎日道路で見かける信号機の小さな模型です。赤が2秒点灯し、黄が一瞬点灯した後、緑が2秒点灯します。その後、再び黄を経て赤に戻り、この動作を繰り返します。3個のLEDを順番に点けたり消したりしながら、タイミングの組み立て方を学びます。

流れるLED
LEDが次々に点灯し、光が走るように進みます。Arduinoが6個のLEDを1個ずつ短く点灯して消灯させることで、光が端から端へと移動し、また最初に戻ります。この簡単なプロジェクトで、1つのパターンで複数の光を制御する方法を学びます。

LDRで光の強さを測定
部屋の明るさを数値で見てみませんか?光に反応する小さな部品、LDRで周囲の光を測定し、Arduinoが0.5秒ごとにその値をコンピューターの画面に表示します。手で覆うと数値が変わる様子を確認できます。自動で点灯する常夜灯などのプロジェクトへの第一歩です。

ESP32でLEDを点滅
ESP32のGPIO出力の基本を学びます。デジタルピンからLEDを点灯・消灯させて、点滅させます。Arduino UNOの定番のLED点滅プロジェクトのESP32版です。Arduino環境で使う基本的な点滅コマンドは同じですが、ESP32のピン配置と3.3 VのGPIO電圧レベルはArduino UNOとは異なります。

Raspberry Pi Picoで外付けLEDを点灯(ブレッドボード)
Picoの内蔵LEDの次は、ブレッドボードに外付けLEDを接続し、GP14ピンで制御します。このプロジェクトでは、Picoの汎用GPIOピンを出力として使う方法、LEDの極性(長い足=アノード/+、短い足=カソード/−)、電流制限抵抗(220Ω)が必要な理由を学びます。抵抗を入れないと、LEDに過大な電流が流れて壊れることがあります。回路はとても簡単です。Pico GP14 → 220Ω抵抗 → LED(+)→ LED(−)→ Pico GND。Wokwiでシミュレーションできます。

LCDディスプレイ付きデジタル電圧計
自作の測定器で、電池や電源アダプターが出力する電圧を調べます。2つの抵抗で作る分圧回路が、高い電圧をボードで読み取れるレベルまで下げます。Arduinoが元の電圧を計算し、2行のLCDディスプレイにボルト単位で表示します。この回路では約55ボルトまでの直流電圧を測定できます。コンセントの商用電源には絶対に接続しないでください。
ほかの記事
BlueGraysアプリ
この回路をスマホでステップごとに作る
回路図、コード、部品リストを1つの画面で確認できます。Arduino、ESP32、Picoのプロジェクトを200件以上用意しています。

