2011-07-10に続く第2弾です。前回は,CdSの値をツィートしましたが,今回は温度センサー(LM60)が手に入ったので,Arduinoに接続された温度センサーの値を,シリアルポート接続でMacOSXに送り,Rubyを使ってツィートしてみました。
stew_gate.rb
2011-07-10に掲載
arduino2twitter.rb
# -*- coding: utf-8 -*- require 'serialport' require 'stew_gate' # Arduinoからシリアルポート経由で値を取得 sp = SerialPort.new('/dev/cu.usbmodem1d11', 9600, 8, 1, SerialPort::NONE) value = sp.readline sp.close # StweGateを経由してtweet token = "__Your Token__" sg = StewGate.new(token) puts str = "My room's temperature = #{value}" sg.tweet(str)
cds.pde
int in0; double temp; void setup() { Serial.begin(9600); } void loop() { in0 = analogRead(0); in0 = map(in0, 0, 1023, 0, 5000); // (*1) temp = (in0 - 424) / 6.25; // (*2) Serial.println(temp); delay(1000); }
(*1)は,シリアル接続で得た値(in0:10bit)を0[mV]から5000[mV]の値にmap関数で対応させています。
(*2)は,LM60のデータシートによると,出力電圧と温度には以下の関係があるためです。
実行結果
以下のように実行します。
$ ruby -I. arduino2twitter.rb My room's temperature = 27.52
My room's temperature = 27.52