今日はタクトスイッチの演習を行います。
詳細はテキストに詳しく記載されていますが、ボタンを押すと信号がONする
というものです。

単純なものですが回路として考えるときにやや難しかったです。
理解するまでに右往左往しましたが、その記錄も載せておきます。


4端子あり、1-2と3-4は常時つながっていて、スイッチが押されることにより1-2と3-4が繋がります。

Longruner タクトスイッチ 瞬間的な触覚 10種類 押しボタンスイッチ マイクロスイッチ スルーホール 小型スイッチ 触覚スイッチ 180個入り LP12

新品価格
¥999から
(2020/4/25 10:28時点)

 

テキストはいつも通り下記を使用します。

電子部品ごとの制御を学べる! Raspberry Pi 電子工作実践講座

新品価格
¥2,728から
(2020/3/29 08:13時点)


今日の演習はP101-P104まで

  1. 準備 ※前回同様
    1. ラズベリーパイ本体 RaspberryPi Zero使用
    2. タクトスイッチ 1個
    3. ブレットボード 1個
    4. 配線 3本
  2. 早速組立てですがテキスト通りに配置しても表示は常時「ON」されっぱなし。
    おそらくP102に書いてあるプルダウン、プルアップの理解が必要なのだと思いますがなかなか難しく・・・
    故に回り道しながら解決していこうと思います。

    1. テキスト上の回路実施 抵抗は1KΩ
    2. 表示はONされっぱなし。
    3. 前回行った2端子スイッチではしっかり検知されているので、なにかがおかしい。
      仮説を(ここから先は完全に憶測です。間違っている可能性大)
      「4PINは3.3Vが常の状態。GNDに繋がったときにOFFとなる」として考えてみる
    4. GNDに繋がった時の動作を検証
      1. 回路
      2. 実物
      3. 結果 押している間OFFになる(GNDと繋がっている)
      4. 次にOFFの状態を作ってみます。
      5. 実物
      6. 結果
        OFFが表示されるようになりました。 あれ?
      7. このままの調子でテキストの回路を組んてみます。
      8. 実物
      9. 結果
        あれ?問題なく作動している。
        一体なにが原因だったのだろうか・・・
  3. プログラム内容
    import wiringpi as pi
    import time
    SW_PIN = 4
    pi.wiringPiSetupGpio()
    pi.pinMode(SW_PIN,pi.INPUT)
    while True:
            if(pi.digitalRead(SW_PIN) == pi.HIGH):
                print (“Switch is ON”)
            else:
                print (“Switch is OFF”)
            time.sleep(1)総評
  4. 総括
    イマイチよくわかりませんが、結果うまく行きました。
    もしかしたら最初の時、抵抗がきちんと接続されていなかったのかもしれません。
    でも今回の結果のおかげで、うまく行かない時は回路を細分化して一つずつ試していけば解決することを学びました。