2026-08-16
タクトスイッチを配置して、LEDと連動してみる
こちらでGPIOのPINを増やしたので、それの検証も兼ねて、LEDとタクトスイッチを連動させてみる。
タクタイルスイッチとも呼ぶ。
【今週の電子部品】タクタイルスイッチ!
LEDの回路はこっちで作ってあるので、PINをつなぎ直しただけ。
新規にタクトスイッチの回路を追加する。

引用:BeagleBone Black 公式ドキュメントPDF 66ページ
P8コネクタの45番PIN,46番PINがOSからもぎ取ったGPIOのPINになる。
46番をLED操作、45番をタクトスイッチ入力、に使用する。
R2(10kΩ)はGPIO入力を保護するため配置する。決して無駄な抵抗ではない。
GPIOを入力で使うならGPIOにはほとんど電流は流れないが、GPIOの設定が意図せず出力になると、スイッチONで大電流が流れGPIOや他のパーツを壊す可能性がある。これを防ぐために必要。
今回だと10kΩを配置しているから、
3.3V ÷ 10kΩ = 0.00033A = 0.33mA
になり、少なくとも意図しない状況になってもP9_3からP8_45に作られた回路には0.33mAの制限された電流が流れることになる。
デモを2種類書いた。
#!/bin/bash # TACT SW 1 sudo config-pin P8_45 gpio >/dev/null # LED 1 sudo config-pin P8_46 gpio >/dev/null # init sudo gpioset gpiochip2 7=0 GPIOSET_PID="" # input loop while read line do event=`echo ${line} | sed -n 's/.*\(RISING\|FALLING\) EDGE.*/\1/p'` echo "*** ${event} ***" if [ -n "${GPIOSET_PID}" ]; then sudo kill "${GPIOSET_PID}" 2>/dev/null fi case "${event}" in RISING) sudo gpioset --mode=signal gpiochip2 7=1 & GPIOSET_PID=$! ;; FALLING) sudo gpioset --mode=signal gpiochip2 7=0 & GPIOSET_PID=$! ;; esac done < <(sudo stdbuf -oL gpiomon gpiochip2 6)
#!/bin/bash # TACT SW 1 sudo config-pin P8_45 gpio >/dev/null # LED 1 sudo config-pin P8_46 gpio >/dev/null # init sudo gpioset gpiochip2 7=0 GPIOSET_PID="" SW=1 # input loop while read line do event=`echo ${line} | sed -n 's/.*\(RISING\|FALLING\) EDGE.*/\1/p'` echo "*** ${event} ***" if [ "${event}" = "RISING" ]; then if [ -n "${GPIOSET_PID}" ]; then sudo kill "${GPIOSET_PID}" 2>/dev/null fi sudo gpioset --mode=signal gpiochip2 7=${SW} & GPIOSET_PID=$! if [ "${SW}" -eq 1 ]; then SW=0 else SW=1 fi fi done < <(sudo stdbuf -oL gpiomon gpiochip2 6)