2013-07-29

Raspberry PiとRubyでLEDをチカチカさせる

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Raspberry Piは、GPIOという仕組みで電子工作を簡単に楽しめるわけです。
そんな電子工作をやってみたいとおもったのがRaspberry Piを買った理由のひとつでもあります。

Raspberry Piで電子工作をするには、ブレッドボードがあるとお手軽にはじめられます。
ブレッドボードとRasberry Piをつなぐには、ジャンパワイヤー(オスーメス)が必要です。


LEDとかブレッドボードを持っていないならば以下があるとよさげです。



まずは、GPIOのシンプルな使い方でLEDを光らせてみます。

Raspberry PiとLEDは以下のように接続します。

今回は27番PINを利用しています。
Raspberry PiのPINに関する情報は、以下が参考になります。
http://blog.livedoor.jp/victory7com/archives/25716142.html

以下のようにすれば、ルート権限のシェルでLEDを光らせることができます。

sudo su
echo 27 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio27/direction
echo 1 > /sys/class/gpio/gpio27/value
echo 0 > /sys/class/gpio/gpio27/value
echo 27 > /sys/class/gpio/unexport

上から順にざっくり説明すると
27番PINを利用することを宣言して、
27番PINを出力でりようすることを宣言して
27番PINの出力をHIGHにして
27番PINの出力をLOWにして
27番PINの利用を終了する
という感じです。

以下が参考になります。


とりあえず、上記でやっていたことをRubyでやってみます。

exp = open("/sys/class/gpio/export", "w")
exp.write(27)
exp.close

dir = open("/sys/class/gpio/gpio27/direction", "w")
dir.write("out")
dir.close

out = 1
20.times do
  val = open("/sys/class/gpio/gpio27/value", "w")
  val.write(out)
  val.close
  out = out == 1 ? 0 : 1
  sleep 0.5
end

uexp = open("/sys/class/gpio/unexport", "w")
uexp.write(27)
uexp.close

これをled.rbとでもして保存してrootで実行するとLEDがチカチカします。

きっと便利なgemがあると思って探してみたところ
pi_piper
というものがありました。

gem install pi_piper

でインストールできます。

でpi_piperを利用すると以下のような感じです。

require 'pi_piper'

pin = PiPiper::Pin.new(:pin => 27, :direction => :out)

10.times do
  pin.on
  sleep 0.5
  pin.off
  sleep 0.5
end

uexp = open("/sys/class/gpio/unexport", "w")
uexp.write(27)
uexp.close

これをled2.rbとでもして保存してrootで実行するとLEDがチカチカします。
すっきりしたような気がします。

最後の27番PINの利用をやめる部分はpi_piperでは対応してなかったので、led.rbのときと同じです。


Lチカだけで終わらないようにしたいなぁと思います。


コメントを投稿