PUBLIC
PARTSSWITCHES7 MIN READ

スイッチとタクトスイッチ4 本足のタクトスイッチの内部配線と、プルアップ、チャタリング

ボタン(タクトスイッチ)は「押している間だけつながる」だけの単純な部品ですが、足が 4 本あるせいで最初はどこにつなぐか迷います。中の配線を知れば、ブレッドボードに挿す向きも、GPIO で読む方法も決まります。

CONTENTSこの記事の目次

01 — INSIDE

4 本足の中身

PUSHピン 1ピン 2ピン 3ピン 4★ コツ:対角線(1と4、または2と3)を使えば必ず正しく動く!
DIAGRAM

タクトスイッチの4本足と内部のつながり。対角線(1と4、または2と3)を選べば、向きを気にせず確実にボタンとして動作します。

  • 4 本足だが、電気的には 2 端子のスイッチ。2 本ずつが最初から導通している
  • 対角線の 2 本(1 と 4、または 2 と 3)は必ず別の組なので、ここを使えば向きを間違えない
  • 隣り合う 2 本を使うと、組み合わせによっては「押さなくても常に ON」になる
  • ブレッドボードでは中央の溝をまたいで挿す。4 本が別々の穴の組に入るので、内部の導通で困らない

02 — PULL-UP

GPIO で読む配線

3.3V (VCC)10kΩGPIO 入力ピンタクトスイッチGND・ボタン離す (OFF) → HIGH (3.3V)・ボタン押す (ON) → LOW (0V)
DIAGRAM

プルアップ抵抗回路の仕組み。ボタン開放時は3.3V(HIGH)、ボタンを押すとGNDに流れて0V(LOW)を検出します。

  • ESP32:pinMode(pin, INPUT_PULLUP)。Raspberry Pi 5:gpiozero の Button(27) は最初からプルアップ
  • 押していない = HIGH(1)、押した = LOW(0)。「押すと 0」に慣れる
  • 外付けの抵抗は不要。ただし配線が長いときやノイズが多いときは外付け 10kΩ を足す

03 — VARIETIES

いろいろなスイッチ

種類動き用途
タクトスイッチ押している間だけ ON(モーメンタリ)入力ボタン
スライド / トグルスイッチ切り替えた状態を保つ(オルタネート)電源、モード切り替え
マイクロスイッチレバーで ON/OFF。カチッと音がする位置検出、リミットスイッチ
リードスイッチ磁石が近づくと ONドアの開閉検出
タッチセンサー触れると ON。ESP32 は内蔵のタッチ入力を持つボタンのない入力

04 — CHATTERING

チャタリング

ボタンを押した瞬間、接点は数ミリ秒の間バウンドして ON/OFF を繰り返します。マイコンは速いので、1 回押しただけなのに「5 回押された」と数えることがあります。

HIGH (3.3V: 離した状態)チャタリング (数msバタつく)LOW (0V: 押した状態)マイコンはこれを「5〜10回押された」と誤検知する → ソフトか0.1μFコンデンサで対策
DIAGRAM

1 回の押下で接点が細かくバウンドし、複数のエッジが発生します。人には見えませんがマイコンは全部数えてしまいます。

  • ソフトで対策:状態が変わったら 20〜50ms 待ってから読み直す(→ ボタンで LED を操作する)
  • ハードで対策:ボタンの両端に 0.1μF のコンデンサ(→ コンデンサの基本)
  • ライブラリに任せる:M5Unified の M5.BtnA.wasPressed() は対策済み。gpiozero は bounce_time を指定できる

05 — WATCH OUT

注意点

4 本足の 2 本だけ使う

隣り合う 2 本を使うと「常に ON」になることがあります。対角線を使うか、テスターで確認します。

フローティング入力

ボタンを GPIO と GND につなぐだけでプルアップを忘れると、値が不定でランダムに反応します。

ESP32 の GPIO0 にボタンをつながない

起動時に押されているとダウンロードモードに入ります。GPIO3・45・46 も同様に避けます。

06 — CHECK YOURSELF

理解チェック

Q1押していないのに GPIO が 0 と 1 をランダムに行き来する。原因は?

プルアップ(またはプルダウン)がない。INPUT_PULLUP を有効にする。

Q21 回押したのにカウントが 3 増える。名前と対策は?

チャタリング。20〜50ms 待って読み直すか、ボタンに 0.1μF を並列に入れる。