買い物編,ハードウェア実装編に続いて,ソフトウェア実装編です.ここまででMacからリレーをON/OFFするという初期の目標は達成です.
お手元のMacに Developer Tools は入っていますよね?まだの方は Apple Developer Connection に入会して(無料),最新版を取ってきて下さい.時間がない方は Mac OS X 10.6 のインストーラディスクに入っているものでも結構です.Developer Tools が古くてもこれから使うRubyに影響はありません.ていうか,最新版を取ってきてもRubyは若干古いのが入っています.
まず Arduino Uno をパッケージから出して,USBケーブルでMacに繋ぎましょう.モデムとして認識されるかもしれませんが,無視しましょう.前回作成したシールド(基板)はまだつけないでください.
このままでは何も出来ません.Arduino公式サイトから開発環境 Arduino.app を取ってきましょう.取ってきたら早速起動です.Fileメニューの下にExamplesというメニューがあります.これは助かります.まず Arduino Uno に搭載されている唯一プログラマブルに点灯できるLEDを点灯させてみましょう.
FileメニューからExamples→Basics→Blinkを選んでください.Arduino.app がベースにしているProcessingに倣って,Arduinoプログラムのことはスケッチと言いますよ.このスケッチをコンパイルして Arduino Uno のメモリへ書き込みます.といってもボタン一発です.ROMライタはいりません.Arduino Uno のブートローダが勝手に送られてきたバイトコードをメモリに書き込んでくれます.
おいどないなっとるんや,そもそもブートローダはいつ立ち上がるんや.
それでこそジジイです.長年の経験がうさんくささをかぎつけます.これから Arduino Uno と通信しようというのに,回路の変更もなく同じラインからプログラムが書き込める?どう考えても矛盾です.
Arduino Uno はこんな巧妙な仕掛けを利用しています.シリアル通信が開始されると,ああ,RS-232を思い出してください,RS-232で言うところの Data Terminal Ready (DTR) が真になると,キャパシタを使ってCPUのリセットピン(Arduinoが使うAVRマイコンの場合は負論理)へトリガーをかけるのです.
そうです,近頃の若者はコンピュータに電源を投入したら自動的に立ち上がるのが当たり前と思っています.もちろん,電源に連動した自動CPUリセット回路のおかげです.Arduino Uno はこの自動CPUリセット回路をシリアル通信開始信号に付けているのです.
ブートローダは10秒間(たぶん)ホストからのプログラム送信を待ちます.もしその間にプログラムが送られてこなければ,ユーザプログラムへ制御を移します.もし10秒以内にプログラムが送られてくれば,ユーザ領域へプログラムを書き込み,自分自身をリセットします.(で,また10秒待ちます.)
では最初のブートローダはいつ書き込まれるのかというと,これは工場出荷時です.なーんて親切なんでしょう.
ちなみにBlinkのプログラムはこんな感じです.
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
This example code is in the public domain.
*/
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards:
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // set the LED on
delay(1000); // wait for a second
digitalWrite(13, LOW); // set the LED off
delay(1000); // wait for a second
}
require ‘funnel’
include Funnel
the_pin = 2
config = Arduino.FIRMATA
config.set_digital_pin_mode(2, OUT)
aio = Arduino.new :config => config
10.times do
aio.digital_pin(the_pin).value = 1
sleep(5)
aio.digital_pin(the_pin).value = 0
sleep(5)
end
$ ruby ruby_basic_01.rbとすると,自作シールドのリレーがON/OFFします.
$ sudo gem update —system無事Gemがアップデートされたら
$ sudo gem install twitterで Ruby Twitter Gem をインストールします.
require “rubygems”
require “twitter”
search = Twitter::Search.new
search.containing(“おはよう”).to(“kanaya”).result_type(“recent”).each do |r|
puts “#{r.from_user}: #{r.text}”
end
search.clear
Loading posts...