シリーズ:基礎シリーズ(電子回路)
この記事の役割:実験シリーズ(フェーズ1:GPIO)で、ボタン入力が不安定になる原因(フワフワ=浮く) を潰し、プルアップ/プルダウンで安定させる ための基礎です。
はじめに
ボタンを配線して入力ピンを読むと、初心者がよく次の現象に遭遇します。
- 押してないのに、勝手にON/OFFが変わる
- 触っただけで値が変わる
- 配線は合っているのに、動作が安定しない
これらは、かなりの確率で 入力ピンが「浮いている(フローティング)」 のが原因です。
プルアップ/プルダウンは、入力を 0か1かを決め打ちして安定させる ための基本テクニックです。
先に結論(※ここは読み飛ばしてOK)
- 入力ピンは、何もつながっていないと 0/1 が不安定になることがある(=浮く)
- そこで抵抗で、入力ピンをふだん High側(プルアップ) か Low側(プルダウン) に固定する
- ボタンを押したときだけ、その固定を ひっくり返す(High→Low または Low→High)
- 多くのマイコンは 内部プルアップ(内蔵抵抗) が使える。まずはそれを使用してOK(外付けは必要になったら)
1. 「入力が浮く」ってどういう状態なのか?
入力ピンは、ざっくり言うと「電気の状態(High/Low)を読む端子」です。
でも、ピンが どこにもつながっていない とき、ピンは
HighでもLowでもない“フワフワ”した状態になりやすいです。
これを フローティング(浮いている) と呼びます。
フローティングになっていると周りのノイズや指で触れた影響などで、値が
- 0になったり、1になったりしてしまいます。
だから「押してないのに反応する」が起きます。
ポイント:入力は「何もしてないときの状態」を決めないと、安定しません。
2. プルアップ/プルダウンの役割(入力の“普段の姿”を決める)
プルアップ/プルダウンは、入力ピンを抵抗でゆるく固定して、何もしていないとき(ボタンを押していないとき)の状態を決める仕組みです。
- プルアップ(Pull-up):何もしていないときは High(1) にしておく
- プルダウン(Pull-down):何もしいないときは Low(0) にしておく
「ゆるく固定」というのが大事で、直結ではなく抵抗を挟むのがポイントです。
3. 一番よく使う形:プルアップ+ボタン(押すと0になる)
実務でも一番よく使うのはこの形です。

※抵抗が付いていますが、ボタンを押したときに電源とGNDを直接つなぐとショートするため、これを防ぐためです。
- ボタンを押していない
→ 入力ピンは 抵抗を通して電源(Vcc)につながっている
→ 入力は 1(High) - ボタンを押した
→ 入力ピンがGNDにつながる(0V側に落ちる)
→ 入力は 0(Low)
つまりこの方式では、ボタンを入力する(押す)と0(Active-Low) になります。
4. もう1つの形:プルダウン+ボタン(押すと1になる)
※今回の実験シリーズ(GPIO入門)では、まず 内部プルアップ を使う前提で進めるため、プルダウンは基本的に使いません。
ただし考え方は同じなので、プルアップの逆の形として紹介します。

- ボタンを押していない → 0(Low)
- ボタンを押した → 1(High)
こちらは、ボタンを入力する(押す)と1(Active-High) になります。
5. なぜ抵抗が必要?(直結だと危険になる)
プルアップ/プルダウンで抵抗を入れる理由は、主に次の通りです。
もし抵抗なしで、ボタンを押していないときに入力ピンを電源(Vcc)へ直結し、ボタンを押した瞬間に入力ピンをGNDへ直結したら…
- 電源と GND が直結(ショートに近い)になります。
抵抗があることで、押したときでも電流が大きくなりすぎず安全です。
(抵抗は、押していないときの入力を決めて安定させつつ、押したときに電流が流れすぎないようにする安全装置です。)
6. 抵抗値は何Ω?(最初は「10kΩ」でOK)
抵抗値は用途やノイズ環境で変わりますが、ボタン入力のプルアップ/プルダウンなら まず10kΩ が無難です。
理由は、次の「両方のリスク」の真ん中あたりでバランスが良いからです。
- 抵抗が大きすぎると:入力の状態がふらつきやすくなり、周りのノイズの影響を受けやすくなることがあります
- 抵抗が小さすぎると:ボタンを押したときに電流が多めに流れ、電池が減りやすい/発熱が増えることがあります
※マイコンの内部プルアップを使う場合は、外付け抵抗が不要なことが多いです。
7. 「内部プルアップ(内蔵)」って何?(最初はこれが楽)
多くのマイコンのGPIOには、内部にプルアップ抵抗を入れられる設定があります。
- 配線が減る(抵抗がいらない)
- 初心者のミスが減る(配線ミスが減る)
- 実験が速く進む
なので、実験シリーズの最初は
- 内部プルアップON
- ボタンは「押したらGNDにつながる」配線
が最も楽です(=ボタンを入力する(押す)と0(Active-Low)になる方式)。
ただし内部プルアップの抵抗値は固定ではなく、外付けより精密ではないことが多いです。
でも実験シリーズのフェーズ1を行う際は内部ブルアップで問題ありません。
8. よくあるつまずき(最初に潰しておく)
つまずき1:ボタンを押してないのに値が変わる
→ 入力ピンの状態が決まっていない可能性が高いです。
プルアップ/プルダウンを入れる(または内部プルアップをON)。
つまずき2:押したら「1」になると思っていたのに「0」になる
→ この配線のプルアップ方式では、ボタンを押すと0(Low)になります。(Active-Low)
コード側で if (read == 0) を「押された」として扱えばOKです。
つまずき3:GNDをブレッドボードにつないでいなくて動かない
※評価ボードのGNDはボード内にありますが、ブレッドボード側にGNDを1本つないで“共通の0V”を作る必要があります。
→ 評価ボードのGNDピン と ブレッドボードのGNDレール(マイナス列) をつなぐ。
(GNDが共通になっていないと、ボタンを押しても入力は0Vになりません。)
つまずき4:配線が合っているのに 入力(0/1)が変わる/安定しない
→ ブレッドボードの挿し間違い(同じ列じゃない/レールが分断)を疑う。
ブレッドボードについては、次の記事で取り扱っています。
リンク:ブレッドボードの内部構造と「LEDがつかない」原因(よくある罠まとめ)
9. 実験シリーズへのつなぎ(この記事を読んだら何ができる?)
この記事が終わったら、実験シリーズ(フェーズ1)で次ができる状態です。
- 「入力が浮く」が何か説明できる
- プルアップ/プルダウンの回路を見て、押したら0/1どっちか言える
- 内部プルアップを使う意味が分かる
- 「ボタンを押したら、0になる」でも焦らない(Active-Lowに慣れる)
まとめ
- 入力ピンは、何もつながっていないと 浮いて不安定になることがある
- プルアップ/プルダウンは、入力の普段の状態(1 or 0)を決めて安定させる
- よく使うのは プルアップ+ボタン(押したら0)
- 抵抗値は最初は 10kΩ でOK
- まずは 内部プルアップ を使うと配線ミスが減る
次に読む(おすすめ順)
- 次:デバウンス入門(ボタンが1回で複数回反応する問題)
- 関連:GNDとは?なぜ基準点が必要なのか?(外部機器とつなぐ前に)
- 実験:フェーズ1:ボタン入力でLED(ポーリング)→ プルアップ/プルダウン体験