LoginSignup
3
4

More than 5 years have passed since last update.

大きい物理ボタンが押されたことを検知する

Last updated at Posted at 2018-09-23

概要

「でっかい物理ボタンを押されたことを検知しよう!」という野望が出てきましたので、先駆者の方の知識をお借りして実装してみました。
チェックしたプラットフォームはArduinoとRaspberryPiとESP32です。
※ESP32を2018/09/24に追加しました。

参考文献

■Arduinoで物理ボタンを作る (目立つボタンで「ッターーン!」しよう)
https://qiita.com/ie4/items/7c6764469f3d41c93a19

■Raspberry PiのGPIOを使って電子工作を楽しむ
https://qiita.com/msrks/items/7de29c4294ce677e05a0

※I have referred to your experiences. Thanks, @ie4 and @msrks.

準備したモノ

Arduino編

参考文献のまま、本当にそのままなのですが、以下のように接続して動作確認を実施しています。

  • Arduinoは12番(黄)とGND(赤)に接続
  • ボタン側は写真のようにつまんでいるだけ

IMG_0089.JPG

  • Arduinoのスケッチはこちらも参考文献の通り
sketch_bigbutton
const int buttonPin = 12;

void setup() {
  Serial.begin(9600);
  pinMode(buttonPin, INPUT_PULLUP);
}

void loop() {
  int buttonState = digitalRead(buttonPin);
  if (buttonState == LOW) {
    Serial.println("Enter!!");
    delay(200);
  }
}

結構半信半疑だったのですが、無事に"Enter!"がシリアルコンソールに出ました。(画質が粗くて恐縮です)
arduino_bigbutton.jpg

Raspberry Pi編

こちらも参考文献の「ボタン入力を検出」の部分を参考にしています。(ってまんまですが)

  • Raspberry Piは18番(赤)とGND(黄)に接続
  • ボタン側はArduino同様つまんでいるだけ IMG_0090.JPG

こちらはPythonのプログラムで動作を監視します。

bigbutton_monitor.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

GPIO.setup(18, GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    input_state = GPIO.input(18)
    if input_state == False:
        print('Enter!!')
        time.sleep(0.2)    # 時間はお好みで

ESP32編

プログラムはArduino編と全く同じです。
ArduinoIDEから扱えるようにESP32-DevKitCをセットアップし、
下記のように配線しました。

IMG_0109.JPG
ブレッドボード越しに12番(黄)とGND(赤)に接続させています。
こちらも問題なく「Enter!!」がシリアルコンソールに表示されました。

この後は、、、

各自のプラットフォーム側で検知したイベントを元にして業務実装です。
ボタンの入力部分をワニ口で繋いでいるところがイマイチしっくりきていないのですが、
今後理屈を勉強したいと思います。

参照頂きありがとうございました。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4