RasPiのLEDをボタンで操作

先週買ったRasPiの部品が到着したので試してみる。

一番簡単そうなアドオンボードから試す。

 

まず、RasPiのGPIOピン部分に触るにはカバーが邪魔なので
カバーの天板部分だけを外した。

RasPiのカバー天板を外した

 

アドオンボードをどのピンに差したら良いか分からなかったが
取付例の写真の通り端から差した。

取付例

 

まず緑のLEDを光らせるべく調べてみた。

購入したアドオンボードの
GPIOポート対応表はこれ。

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を打ってみる。

GPIOディレクトリの中身

 

このexportに使いたいGPIOの番号をechoで書き込む。
するとgpio*というディレクトリができている。

exportにGPIO番号を書き込む

 

そのディレクトリの中身はこんな感じ。

gpio*ディレクトリの中身

 

catコマンドでdirectionの中身を見ると
デフォルトではin(出力)となっている。

このdirectionに、先程exportに書き込んだのと同じように
echoで入力か出力かを書き込む。
今回はLEDを光らせるのでout(出力)を書き込む。

directionにoutを書き込む

 

この状態でvalueに1を書き込めばLEDが光る。
いまのvalueの中身は0だ。

valueの中身

 

echoでvalueに1を書き込む。

valueに1を書き込む

 

無事にLEDが光った。

緑のLEDが光った

 

valueに0を書き込めばLEDは消える。

valueに0を書き込む

 

もうGPIOピンを使わないのであれば
最初に使ったexportではなく、unexportにechoで番号を書き込む。
すると、使っていたgpio*ディレクトリが消える。

unexportに番号を書き込む

 

同じ要領でGPIOピン番号を変えて試してみると、違うLEDを光ったし、
ブザーも変な音だったが一応鳴った。

緑以外のLEDを光らせた

 

ボタンの場合は入力になるので、
directionにはoutを書き込まずデフォルトのinのままで良い。

ボタンを押してない時のvalueは0で、
ボタンを押している時にvalueを見ると1になっている。

ボタン(入力)の場合

 

続いて、パーツを買ったWebサイトに記載されている
サンプルのコードを試しに実行してみた。

 

WiringPiというライブラリ使用が前提のようなので
下記ページを参考にしてインストールをした。

Raspberry PiのGPIO制御方法を確認する(GPIO制御編その2)

 

WiringPiのインストールに特に問題はなかった。

 

では、参考サイトのサンプルコードを試してみる。

まずtouchコマンドでsample.shというファイルを作ってから
viでsample.shにコードをコピペする事にした。

sample.shを作成

 

viはあまり詳しくないが、
i で現在のカーソル位置から挿入、
shift + insert でペースト。

shift + insert

続いてescを押してから、:wq で保存して終了でできた。

 

sample.shのパーミッションに実行権限をつけたいので
chmod 700 sample.sh
してから
./sample.sh で実行。

./sample.shで実行

 

すると、参考サイトの動画どおりに
ボタンを押すとLEDが光り、ブザーがなった。

 

Ctrl+Cでsample.shを終了させると、
ボタンを押しても反応しなくなった。

ctrl + Cでsample.shを終了

 

サンプルコードの実行は以上。

長くなってきたので一旦ここまでにする。