努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:os:linux:debian:bbb-doc005

005.LEDとタクトスイッチを連動する

2026-08-16
タクトスイッチを配置して、LEDと連動してみる

概要

こちらでGPIOのPINを増やしたので、それの検証も兼ねて、LEDとタクトスイッチを連動させてみる。

タクトスイッチ

タクタイルスイッチとも呼ぶ。
【今週の電子部品】タクタイルスイッチ!

回路

LEDの回路はこっちで作ってあるので、PINをつなぎ直しただけ。
新規にタクトスイッチの回路を追加する。

20260815-214522.jpeg


引用: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種類書いた。

押している間LED点灯


Pushdemo1.sh
#!/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)

トグル操作でLED点灯


Pushdemo2.sh
#!/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)
documents/os/linux/debian/bbb-doc005.txt · 最終更新: by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki