概要
Ruby で GPIO を制御するライブラリに pi_piper というライブラリがあります
今回はそれを使って簡単な L チカをやってみました
環境
- Raspbian 8.0 (Jessie)
- RaspberryPi2 TypeB
- Linux raspberrypi 4.4.11-v7+ #888
- ruby 2.1.5p273
- gem 2.2.2
- pi_piper 1.3.2
Ruby インストール
一応メモしておきます
ruby 自体は apt-get でインストールしました
- sudo apt-get -y install ruby ruby-dev
- sudo gem install bundler
- bundle init
- vim Gemfile
- gem “pi_piper”
- bundle install
配線
17 ピンと GND を使って配線するだけです
抵抗は 1KΩ を使っています
スクリプト
- vim pi_piper.rb
require 'pi_piper'
include PiPiper
pins = [17]
led = 0
pins.each do |pin|
begin
File.open("/sys/class/gpio/unexport", "w") { |f| f.write("#{pin}") }
rescue
puts "Already unexported: #{pin}"
end
end
pin = PiPiper::Pin.new(:pin => pins[led], :direction => :out)
pin.on
sleep 1
pin.off
簡単な L チカですが一点ポイントがあります
PiPiper::Pin.new する前に対象の GPIO を unexport する必要があります
で対象の GPIO がすでに unexport された状態で unexport しようとすると Exception が発生するので begin - rescue で囲っています
実行
- bundle install && sudo bundle exec ruby pi_piper.rb
という感じで実行します
GPIO のファイルに直接内部で触っているので root 権限が必要です
成功すると 1 秒 LED が転送すると思います
最後に
Ruby で pi_piper を使ってみました
pi_piper は Eventmachine を使った GPIO の監視ができるためそれを使えるのがメリットだと思います
例えばタクトスイッチなどボタンを押す処理を loop ではなく Event 処理として扱うことができるようになります
イベント処理も機械があれば触ってみたいと思います
0 件のコメント:
コメントを投稿