先週買ったRasPiの部品が到着したので試してみる。
一番簡単そうなアドオンボードから試す。
まず、RasPiのGPIOピン部分に触るにはカバーが邪魔なので
カバーの天板部分だけを外した。
アドオンボードをどのピンに差したら良いか分からなかったが
取付例の写真の通り端から差した。
まず緑のLEDを光らせるべく調べてみた。
購入したアドオンボードの
GPIOポート対応表はこれ。
参考にしたのはこちらのサイト。
Raspberry PiのGPIO制御方法を確認する(GPIO制御編その1)
分かりやすく説明されているので下に引用する。
1. GPIOピンを使うよ!って宣言する
例えばGPIO18ピンを使う場合、仮想ファイルの/sys/class/gpio/exportにGPIOの番号を書き込みます。これを行うことにより、/sys/class/gpio/ディレクトリにGPIO18ピン制御に必要な仮想ファイルが生成されます。具体的には次のセクションで詳しくみてみます。2. 使う宣言をしたGPIOピンが入力なのか出力なのか指定する
(1)で使う宣言したGPIOピンが入力なのか出力なのか指定します。3. GPIOを制御する
これでやっとGPIOの制御ができるようになります。GPIO18ピンであれば、/sys/class/gpio/gpio18/valueに0(ゼロ)か1(いち)を書き込みます。4. GPIOピンを使い終わったよ!って宣言する
GPIOピンの制御が終わったら使い終わったよ、って教えてあげます。
まず /sys/class/gpio でlsを打ってみる。
このexportに使いたいGPIOの番号をechoで書き込む。
するとgpio*というディレクトリができている。
そのディレクトリの中身はこんな感じ。
catコマンドでdirectionの中身を見ると
デフォルトではin(出力)となっている。
このdirectionに、先程exportに書き込んだのと同じように
echoで入力か出力かを書き込む。
今回はLEDを光らせるのでout(出力)を書き込む。
この状態でvalueに1を書き込めばLEDが光る。
いまのvalueの中身は0だ。
echoでvalueに1を書き込む。
無事にLEDが光った。
valueに0を書き込めばLEDは消える。
もうGPIOピンを使わないのであれば
最初に使ったexportではなく、unexportにechoで番号を書き込む。
すると、使っていたgpio*ディレクトリが消える。
同じ要領でGPIOピン番号を変えて試してみると、違うLEDを光ったし、
ブザーも変な音だったが一応鳴った。
ボタンの場合は入力になるので、
directionにはoutを書き込まずデフォルトのinのままで良い。
ボタンを押してない時のvalueは0で、
ボタンを押している時にvalueを見ると1になっている。
続いて、パーツを買ったWebサイトに記載されている
サンプルのコードを試しに実行してみた。
#!/bin/sh ## GPIO設定 LG1=4 LG2=17 LY1=22 LY2=10 LR1=9 LR2=11 BTN=7 BUZ=8 LEDS="$LG1 $LG2 $LY1 $LY2 $LR1 $LR2" LEDSR="$LR2 $LR1 $LY2 $LY1 $LG2 $LG1" ## サブルーチン beep1() { gpio -g write $BUZ 1 ; sleep 0.03 ; gpio -g write $BUZ 0 ; sleep 0.02 } beep2() { gpio -g write $BUZ 1 ; sleep 0.2 ; gpio -g write $BUZ 0 ; sleep 0.2 } led() { gpio -g write $1 $2 } ## 初期化 for io in $LEDS $BUZ ; do gpio -g mode $io out led $io 0 done gpio -g mode $BTN in ## メイン beep1 beep1 while true ; do btnstat=`gpio -g read $BTN` if [ $btnstat -eq 1 ] ; then beep2 for i in 1 2 ; do for io in $LEDS; do led $io 1; sleep 0.1; done for io in $LEDSR; do led $io 0; sleep 0.1; done beep1 done for i in 1 2 ; do for io in $LEDSR; do led $io 1; sleep 0.1; done for io in $LEDSR; do led $io 0; sleep 0.1; done beep1 done sleep 1 fi sleep 0.1 done
WiringPiというライブラリ使用が前提のようなので
下記ページを参考にしてインストールをした。
Raspberry PiのGPIO制御方法を確認する(GPIO制御編その2)
sudo apt-get install libi2c-dev git clone git://git.drogon.net/wiringPi cd wiringPi ./build
WiringPiのインストールに特に問題はなかった。
では、参考サイトのサンプルコードを試してみる。
まずtouchコマンドでsample.shというファイルを作ってから
viでsample.shにコードをコピペする事にした。
viはあまり詳しくないが、
i で現在のカーソル位置から挿入、
shift + insert でペースト。
続いてescを押してから、:wq で保存して終了でできた。
sample.shのパーミッションに実行権限をつけたいので
chmod 700 sample.sh
してから
./sample.sh で実行。
すると、参考サイトの動画どおりに
ボタンを押すとLEDが光り、ブザーがなった。
Ctrl+Cでsample.shを終了させると、
ボタンを押しても反応しなくなった。
サンプルコードの実行は以上。
長くなってきたので一旦ここまでにする。