Raspberry Piでピンの状態を読み、cronファイルの2つの項目(またはそのうちの1つ)から選択する方法は?

Raspberry Piでピンの状態を読み、cronファイルの2つの項目(またはそのうちの1つ)から選択する方法は?

それで、RPI 3 MLBスコアボードを作成しました。これで、ディスプレイに私のお気に入りのチームのゲームが表示されたり、ゲームが進むにつれてすべてのチームとループが表示されることがあります。スコアボードの背面にトグルスイッチを追加して、当時誰がプレイしているかに応じて、「すべてのチーム」または「私のチーム」を選択できるようにしたいと思います。 「All-Teams」または「My-Teams」を含む2つのほぼ同じスコアボードディレクトリがあります。

「cd /home/pi/mlb-led-scoreboard」に入力した項目に応じて、すべてのチームまたはマイチームを表示するスコアボードを起動する「start-scoreboard.sh」というクローンファイルがあります。またはここに私のチーム)"をcronファイルに保存してください。

RPIにGPIOピンの状態を読み込み、All-TeamsまたはMy-Teamsディレクトリを実行させる方法はありますか?以下は、すべてのチームディレクトリを一覧表示する「start-scoreboard.sh」cronファイルの例です。

!/bin/bash
u/reboot sleep 60 $$ start-scoreboard.sh
cd /home/pi/mlb-led-scoreboard-All-Teams
n=0
until [ $n -ge 10 ]
do
python main.py --led-gpio-mapping=adafruit-hat --led-brightness=50 --led-slowdown-gpio=3 --led-rows=32 --led-cols=64 && break
n=$[$n+1]
sleep 10
done

答え1

まず、PythonスクリプトでGPIOタスクを実行しています。正直なところ、GPIOステータスを読み、それに応じて動作するために使用されているのと同じライブラリ(わかりません)を使用する必要があります!ループにも同じですdo python… ; sleep 10; done。これは実際にPythonスクリプトに統合する必要があります。

第二に、もちろんカーネルの設定に応じてGPIO擬似ファイルの値を確認してください(以下を使用して/sys/class/gpio/gpio{number}/valueそのピンの方向を設定する必要があるかもしれません)。echo in > /sys/class/gpio/gpio{number}/direction出口最初のものはecho {number} > /sys/class/gpio/export)です。廃止予定の sysfs インターフェイスしかし、RPiのデフォルトカーネルはまだアクティブになっているはずです。または、gpioLinuxディストリビューション用にインストールできるツールを使用しますgpio read {id}

答え2

まあ、私は最終的に次の方法を使用し、効果があったようです。誰もがこの問題に直面して答えを探している場合に備えて、この記事を投稿したかったのです。 GPIOピン配線で結局、ピン39(グランド)とピン40の間にスイッチを接続するようになりました。

#!/bin/bash

# Set GPIO pin number
GPIO_PIN=40  # Enter what GPIO pin is to be switched to ground

# Set up GPIO pin as input
echo "$GPIO_PIN" > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$GPIO_PIN/direction

# Read the state of the GPIO pin
GPIO_STATE=$(cat /sys/class/gpio/gpio$GPIO_PIN/value)

# Depending on the GPIO state, choose the appropriate directory
if [ $GPIO_STATE -eq 0 ]; then
    SCOREBOARD_DIR="/home/pi/mlb-led-scoreboard-All-Teams"
else
    SCOREBOARD_DIR="/home/pi/mlb-led-scoreboard-My-Teams"
fi

# Change to the selected directory
cd "$SCOREBOARD_DIR"

# Start the scoreboard
n=0
until [ $n -ge 10 ]
do
    python main.py --led-gpio-mapping=adafruit-hat --led-brightness=50 --led-slowdown-gpio=3 --led-rows=32 --led-cols=64 && break
    n=$[$n+1]
    sleep 10
done

# Clean up GPIO pin
echo "$GPIO_PIN" > /sys/class/gpio/unexport

関連情報