Dinoを使って簡単にRubyでArduinoを制御することを知ったので、光センサーを使って遊んでみます。
準備したもの
*Arduino UNO
*ブレッドボード
*ジャンパーコード
*光センサー(CdSセンサーなかったため、LLS05-Aを利用。)
回路図
スクリプト
こちらのnightlightのサンプルをそのまま使います。
sensor.when_data_receivedはloopの中に入れなくても常に値を送信してくれるようです。
nightlight.rb
require 'dino'
board = Dino::Board.new(Dino::TxRx.new)
sensor = Dino::Components::Sensor.new(pin: 'A0', board: board)
on_data = Proc.new do |data|
puts data
end
sensor.when_data_received(on_data)
sleep
動作
*ruby nightlight.rb
でスクリプトを起動。
*部屋の中では100前後の値を出力し、手をかざすと20ぐらいまで値が低下することが確認できました。下記は出力抜粋です。
$ ruby nightlight.rb
097
097
097
---snip---
023
022
021
021
020
019
まとめ
*簡単な配線とサンプルスクリプトで光センサーで入力した値をTerminalに出力することができました。
*光センサーと手の距離によって値も変わりますし、光センサー複数使って手を動きを追跡することができそうです。(手を右から左に動かしたとか。)