http://d.hatena.ne.jp/m_seki/20150426
http://d.hatena.ne.jp/m_seki/20150429
前回の続き。超音波距離センサーとPIRセンサーを同時につないで連携させてみた。
PIRセンサーがなにかを検知したら、距離を三回測ってみる、って仕様です。
結線メモ
前回、前々回の結線と同じです。5Vから二つ繋がなきゃならないのだけどブレッドボードの電源の列から分けました。
動くものねえ。
プログラム
前回のmodule GPIOを使用して、主処理だけ書き換えます。
無限ループだから後処理にたどり着かないんだよなー。
def distance(trig, edge) GPIO.write(trig, 1) sleep(0.0001) GPIO.write(trig, 0) edge.read edge.wait(1) s = Time.now edge.wait(1) e = Time.now (e.to_f - s.to_f) * 17000 end GPIO.export(17, 'out') GPIO.export(27, 'in') GPIO.export(4, 'in') edge = GPIO::Edge.new(27) pir = GPIO::Edge.new(4) while true if pir.wait.to_i == 1 puts 'motion' 3.times do |n| sleep(0.5) p [n, Time.now, distance(17, edge)] end else puts 'leave' end end edge.close pir.close GPIO.unexport(17) GPIO.unexport(27) GPIO.unexport(4)
実験
PIRセンサーの反応する角度が広いので、実験してると自分が検知されてしまいました。
トイレットペーパーの芯を二つつないで指向性(?)をあげて手をかざすと手との距離を測ってくれるようになりました。