Gainer+Ruby+Twitterで「お知らせTwitter」

7月 10th, 2008 admin Posted in Gainer |

6.jpg
Gainerを買ったはいいのですが、残念なことにFlashを持ってなければASも書けないので、Rubyから使えるようにしてみようと思います。

作るもの

Twitterで@メッセージをもらったはいいが返信が遅れて気まずいというような状態を避けるために、@メッセージをもらったらブザーが鳴りLEDがチカチカするようなものを作ってみたいと思います。
なんだかパッとしませんがGainerで初めて作るものなのでこんなもんです。

今回も参考サイト様様でしたので。先に参考サイトを紹介させていただきます。

参考サイト

RubyからFunnelで加速度センサー(Gainer)の値を取得してみた (Unknown Quality)
Gainer を Ruby から使う
Greenbear Laboratory - Ruby Twitter Gem簡易リファレンス
hwhack: Gainerとrubyとtwitter (あるいはタンジブルなtwitter)

まずはセットアップ

WindowsXP用ドライバをダウンロード
http://gainer.cc/Download

Funnelをダウンロード
http://code.google.com/p/funnel/downloads/list
C:\gainer\funnel以下に配置

RubyからFunnelを扱うためにOpen Sound Controlをインストール
RAA - osc
http://raa.ruby-lang.org/project/osc/

OSCのインストールは以下のようにコマンドを打つだけ
> ruby install.rb config
> ruby install.rb setup
> ruby install.rb install

GainerモジュールをUSBに差し込むとドライバの場所を聞かれるので、先ほどダンロードしたものを指定。
2回聞かれますので2回同じ事をします。

funnelを起動します。
C:\gainer\funnel\server>java -jar funnel_server.jar
するとjavaのウインドウが開いて

Funnel 007 (2008-04-21)
シリアルポートが指定されていないため自動的に取得されたポートを使用します
I/Oモジュールと接続中です…
tried: COM1
I/Oモジュールと接続が完了しました:COM3
I/Oモジュールを再起動中です…
I/Oモジュールは正常に再起動しました
ファームウェアのバージョン:1.0.0.15
コマンドポート:サーバの起動中…
通知ポート:サーバの起動中…
通知ポート:サーバが起動しました:9001
コマンドポート:サーバが起動しました:9000

こんな感じのメッセージが表示されればOK

コードを書く

RUBY:
  1. $: <<'..'
  2.  
  3. require 'rubygems'
  4. require 'twitter'
  5.  
  6. require 'funnel'
  7.  
  8. module Funnel
  9.  
  10.   agent = Twitter::Base.new(USER_NAME,PASSWORD)
  11.   agent.timeline(:friends).each do |s|
  12.     if /^@USER_NAME/ =~ s.text
  13.       p s.text
  14.       gio = Gainer.new(Gainer::MODE1)
  15.  
  16.       #アナログ出力0についているブザーを鳴らす
  17.       gio.aout(0).value = 0.5
  18.      
  19.       #Gainerの基板についているLEDの点滅
  20.       Osc.service_interval = 33
  21.       blinker = Osc.new(Osc::SQUARE, 2.0, 0)
  22.       gio.led.filters = [blinker]
  23.       blinker.reset
  24.       blinker.start
  25.      
  26.       sleep(2)
  27.     end
  28.   end
  29.  
  30. end

取得したタイムラインに@toyoshiがあると「ピー」「チカチカチカ」となるようになった。かなりシュールです。

gio.aout(0).value = 0.5
この書き方とかが正しいのか不安なのと、Rubyのモジュールがよくわかっていないので、そのあたりを調べながら次回からは書籍に沿って勉強してみようかなと思います。

Leave a Reply