忍者ブログ
たんなるメモです。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

音声の出力

#自動判別
$ sudo amixer cset numid=3 0
#本体のステレオジャックへ出力
$ sudo amixer cset numid=3 1
#HDMI端子へ出力
$ sudo amixer cset numid=3 2
参考資料:https://fabcross.jp/category/make/sorepi/20170711_speak_japanese.html?fm=side_chkit
PR
友人から指摘があった分を修正しました。
スペースの開け方とかめんどくさいなw

#!/bin/sh NUM=0 PRG="sudo PROGRAM -OPTION " # GPIOのポート2,3,4,17を入力でオープン # echo 2 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio2/direction echo low > /sys/class/gpio/gpio2/direction echo 3 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio3/direction echo low > /sys/class/gpio/gpio3/direction echo 4 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio4/direction echo low > /sys/class/gpio/gpio4/direction echo 17 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio17/direction echo low > /sys/class/gpio/gpio17/direction # GPIOポートの入力状態を調べ数値に変更 # if [`cat /sys/class/gpio/gpio2/value` -eq 1] ; then NUM=`expr $NUM + 1` fi if [`cat /sys/class/gpio/gpio3/value` -eq 1] ; then NUM=`expr $NUM + 2` fi if [`cat /sys/class/gpio/gpio4/value` -eq 1] ; then NUM=`expr $NUM + 4` fi if [`cat /sys/class/gpio/gpio17/value` -eq 1] ; then NUM=`expr $NUM + 8` fi # GPIOのポートを閉じる # echo 2 > /sys/class/gpio/unexport echo 3 > /sys/class/gpio/unexport echo 4 > /sys/class/gpio/unexport echo 17 > /sys/class/gpio/unexport # 条件に応じて実行データを設定 # case $NUM in 0 ) EXE="OBJECT01" ;; 1 ) EXE="OBJECT02" ;; 2 ) EXE="OBJECT03" ;; 3 ) EXE="OBJECT04" ;; 4 ) EXE="OBJECT05" ;; 5 ) EXE="OBJECT06" ;; 6 ) EXE="OBJECT07" ;; 7 ) EXE="OBJECT08" ;; 8 ) EXE="OBJECT09" ;; 9 ) EXE="OBJECT10" ;; 10 ) EXE="OBJECT11" ;; 11 ) EXE="OBJECT12" ;; 12 ) EXE="OBJECT13" ;; 13 ) EXE="OBJECT14" ;; 14 ) EXE="OBJECT15" ;; 15 ) EXE="OBJECT16" ;; esac # プログラム オプションと結合 # EXE=$PRG$EXE` # 表示と実行 # echo ${EXE} ${EXE} # v0.0.1 Oct. 28 2015
先日友人から「シェルスクリプトでよくねー?」って言われたので、上記プログラムをシェルスクリプト移植してみた。

※動作実験してません
※このままコピペしても動かないと思います。
※エラい人添削お願いします。
#!/bin/sh
NUM = 0
PRG = "sudo PROGRAM -OPTION "

# GPIOのポート2,3,4,17を入力でオープン
#
echo 2 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio2/direction
echo low > /sys/class/gpio/gpio2/direction
echo 3 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio3/direction
echo low > /sys/class/gpio/gpio3/direction
echo 4 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio4/direction
echo low > /sys/class/gpio/gpio4/direction
echo 17 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio17/direction
echo low > /sys/class/gpio/gpio17/direction

# GPIOポートの入力状態を調べ数値に変更
#
if cat /sys/class/gpio/gpio2/value -eq 1
then
  NUM = `expr $NUM + 1`
fi
if cat /sys/class/gpio/gpio3/value -eq 1
then
  NUM = `expr $NUM + 2`
fi
if cat /sys/class/gpio/gpio4/value -eq 1
then
  NUM = `expr $NUM + 4`
fi
if cat /sys/class/gpio/gpio17/value -eq 1
then
  NUM = `expr $NUM + 8`
fi

# GPIOのポートを閉じる
#
echo 2 > /sys/class/gpio/unexport
echo 3 > /sys/class/gpio/unexport
echo 4 > /sys/class/gpio/unexport
echo 17 > /sys/class/gpio/unexport

# 条件に応じて実行データを設定
#
case $NUM in
   0 ) EXE = "OBJECT01";;
   1 ) EXE = "OBJECT02";;
   2 ) EXE = "OBJECT03";;
   3 ) EXE = "OBJECT04";;
   4 ) EXE = "OBJECT05";;
   5 ) EXE = "OBJECT06";;
   6 ) EXE = "OBJECT07";;
   7 ) EXE = "OBJECT08";;
   8 ) EXE = "OBJECT09";;
   9 ) EXE = "OBJECT10";;
  10 ) EXE = "OBJECT11";;
  11 ) EXE = "OBJECT12";;
  12 ) EXE = "OBJECT13";;
  13 ) EXE = "OBJECT14";;
  14 ) EXE = "OBJECT15";;
  15 ) EXE = "OBJECT16";;
esac

# プログラム オプションと結合
#
EXE = `expr $PRG + $EXE`

# 表示と実行
#
echo ${EXE}
${EXE}


# v0.0.0 Oct. 26 2015
マイラズパイ



マイブレボ



実行部分を入れてみました。
添削お願いします。
# -*- coding: shift-jis -*-

# 初期設定
#
import subprocess
import RPi.GPIO as GPIO


# BCMをBOARDにするちピンの配置番号 
#
GPIO.setmode(GPIO.BCM)

# GPIOのポートを入力でオープン
#
GPIO.setup(  2 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(  3 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(  4 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup( 17 , GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

# 実行データのテーブルを定義
#
gname_dict_1  = { 0 : 'OBJECT01',
                  1 : 'OBJECT02',
                  2 : 'OBJECT03',
                  3 : 'OBJECT04',
                  4 : 'OBJECT05',
                  5 : 'OBJECT06',
                  6 : 'OBJECT07',
                  7 : 'OBJECT08',
                  8 : 'OBJECT09',
                  9 : 'OBJECT10',
                 10 : 'OBJECT11',
                 11 : 'OBJECT12',
                 12 : 'OBJECT13',
                 13 : 'OBJECT14',
                 14 : 'OBJECT15',
                 15 : 'OBJECT16' }

# 変数の設定
#
exec_str = 'sudo PROGRAM -OPTION '
number_integer = 0

# GPIOポートの入力状態を調べ数値に変更
#
if GPIO.input(2) == 0:
else:
  number_integer = number_integer + 1
if GPIO.input(3) == 0:
else:
  number_integer = number_integer + 2
if GPIO.input(4) == 0:
else:
  number_integer = number_integer + 4
if GPIO.input(17) == 0:
else:
  number_integer = number_integer + 8

# GPIOのポートを閉じる
#
GPIO.cleanup()

# 変数(実行コマンドライン)の設定
#
command_str = exec_str + gname_dict_1[number_integer]


# 実行コマンドラインを表示
#
print command_str

# コマンドラインを実行
#
return_integer = subprocess.check_output( command_str.split(" ") )

# v0.0.3 Oct. 22 2015
プロフィール
HN:
ぽんかん
性別:
非公開
P R
忍者カウンター
忍者ブログ [PR]