ボタンの入力を取ってみる

Lチカをやって出力の部分をやったので、今度は入力で。

実験用の回路を作る

しらべたこと

  • タクトスイッチは押すと回路が繋がる。
  • タクトスイッチは4本足が出ているけど、2本づつペアになっている。
  • 入力にもGPIOポートを使う。+3.3VがGPIOに入力されるとHIGHの信号が取れる。
  • タクトスイッチをGPIOに直接繋ぐとタクトスイッチがOFFの状態のときに状態が不定になるため、GPIOポートはGNDに繋ぐ必要がある。
  • 回路の組み方でプルアップ抵抗/プルダウン抵抗と呼ぶ。+3.3V側に抵抗を入れるとプルアップ抵抗で、スイッチがOFFのとき信号がHIGHになる。逆にGND側に抵抗を入れるとプルダウン抵抗で、スイッチがONのときに信号がHIGHになる。
  • プルアップ抵抗の場合は1kΩ程度の抵抗、プルダウン抵抗の場合は10kΩや100kΩの抵抗を使用する。
  • 直感としてはプルダウン抵抗の方が扱いやすい感じだけど、プルアップ抵抗の方が抵抗値が低くて済むので消費電量の面で有利という特徴がある。(らしい)

    回路図


    今回は直感重視でプルダウン抵抗として組んでみた。抵抗は10kΩで。
    GPIO 24を入力に使う設計。

やってみる

ソース

ソースはこんな感じで。ほぼPiPiperのReadmeのままですが。
after~で指定した条件が生じたときだけブロックが実行される設計が.NETのRxっぽくって面白いと思った。