micro:bit とジョイスティックを接続したらスイッチ入力がうまく読めない?原因と仕組みを解説

micro:bit とジョイスティックを接続して遊んでいたところ、
ジョイスティックの「押し込みスイッチ(SW ピン)」がうまく動作しない問題に遭遇しました。

調べてみると、micro:bit の入力ピンのデフォルト設定が原因で、
思わぬ電圧が読み取られていたことが分かったので、仕組みと対処をまとめます。

スポンサーリンク

1. ジョイスティックの構造と SW ピン

一般的なジョイスティックは、

  • X 軸(左右)
  • Y 軸(上下)
  • 押し込みスイッチ(SW)

の 3 種類の入力を持っています。

今回問題になったのは、この 押し込みスイッチ(SW ピン) です。

2. ジョイスティックのスイッチ回路

ジョイスティック内部のスイッチ回路は、概ね次のような構成です。

  • 3.3V と GND の間に 4.8kΩ の抵抗
  • その途中からスイッチへ配線
  • 自分で追加した 10kΩ のプルアップ抵抗(R1)
  • スイッチを押すと GND に落ちる構造

SW ピンはこの抵抗とスイッチの間に接続され、
micro:bit の P0 ピン に入力されるようにしています。

3. アナログ読み取りでは正常に動作する

micro:bit の P0 を アナログ入力に設定した場合、

  • 押していない → 3.3V
  • 押した → 0V

と、期待通りの電圧が読み取れます。

4. デジタル読み取りにすると電圧が 1.9V になる謎

ところが、P0 を デジタル入力にすると挙動が変わります。

  • 押していない → 1.9V
  • 押した → 0V

本来 3.3V が来るはずなのに、なぜか 1.9V に低下してしまう。

この 1.9V が厄介で、 デジタル入力の判定基準(しきい値)に対して、

  • HIGH にも LOW にも判定されない中途半端な電圧

になってしまい、結果として 常に 0(LOW)扱いになってしまいます。

5. 原因:micro:bit のデジタル入力はデフォルトで「プルダウン」になる

調べてみると、micro:bit の入力ピンは、

  • アナログ入力 → プルアップ/プルダウンなし
  • デジタル入力 → デフォルトでプルダウン抵抗が有効

という仕様になっていました。

つまり、P0 をデジタル入力にした瞬間、

  • 内蔵プルダウン抵抗(数十 kΩ)が GND に接続される
  • 外付けの 10kΩ プルアップと 分圧が発生
  • 結果として 1.9V になる

という仕組みです。

6. 分圧で 1.9V になる理由

外付け 10kΩ(プルアップ)と micro:bit 内蔵のプルダウン抵抗(仮に 20kΩ とする)が直列になると、

3.3V×20kΩ10kΩ+20kΩ2.2V

実際には抵抗値の誤差などで 1.9V 前後になります。

この電圧はデジタル入力のしきい値を超えないため、
押していない状態でも HIGH と判定されないというわけです。

7. 解決策:入力ピンの設定を明示的に変更する

micro:bit の P0 を使うときは、

  • プルアップに設定する
  • プルダウンを無効にする
  • アナログ入力として扱う

など、用途に応じて 明示的に設定する必要があります。

デフォルトのまま使うと、今回のように意図しない分圧が起きてしまいます。

8. まとめ:内部回路を理解して設計しよう

今回のポイントをまとめると、

  • micro:bit のデジタル入力はデフォルトで プルダウン有効
  • 外付けプルアップと内蔵プルダウンが 分圧を起こす
  • その結果、SW ピンが 1.9V の中途半端な電圧になる
  • 入力ピンの設定(プルアップ/プルダウン)は必ず確認する

電子工作では、マイコン内部の回路設定が思わぬ動作に影響することがあります。
今回のようなトラブルは良い学びになるので、ぜひ参考にしてみてください。

error: コンテンツ保護のため右クリック使用禁止