ラベル Arduino の投稿を表示しています。 すべての投稿を表示
ラベル Arduino の投稿を表示しています。 すべての投稿を表示

2013-03-03

rubyでarduinoを操作する

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでarduinoを操作したいなぁと思ったわけです。

で調べてみるといくつか方法があるようです。
以下で紹介されています。
http://playground.arduino.cc/interfacing/ruby

ここで紹介されている
arduino_firmata

dino
でLEDを点滅させるLチカを試してみました。


どちらを試すにせよarduinoの環境が必要です。
以下とかを見れば環境構築はできそうな気がします。
http://trac.switch-science.com/wiki/Arduino
http://www.soundscience.co.jp/soundshakit/pa504z2/error.html


まずはarduino_firmataです。

こちらはlinux環境でないと使えない感じです。

arduino側にfirmataというスケッチをアップロードしておいて、PCとUSBで接続しておいてrubyで操作します。
以下のような感じです。

まずは、arduino側にfirmataをアップロードです。
Arduino IDEのサンプルにあるものをアップロードします。
ファイル -> スケッチの例 -> Firmata-> StandardFirmata
を開いてアップロードすればOKです。

とりあえずfirmataが動くかどうかを確認するプログラムが
http://firmata.org/wiki/Main_Page
にあるのでこちらをダウンロードしてLEDが光るかどうかを試してもよいかもしれないです。

ruby側です。

まずは、インストールです。
gem install arduino_firmata

以下のようなプログラムを用意します。
require "rubygems"
require "arduino_firmata"

arduino = ArduinoFirmata.connect "/dev/ttyUSB0"

puts "firmata version #{arduino.version}"

while true
  arduino.digital_write 13, true
  sleep 1
  arduino.digital_write 13, false
  sleep 1
end

これを実行させるとLEDが点滅します。
connectに指定する値はとりあえずarduino接続前に
ls /dev > aaa
なりしておいて、その後に接続して再度
ls /dev > bbb
でdiffをとって増えたものを指定しておけば、よさげです。

参考になるサイトは、以下のとおりです。
http://shokai.github.com/arduino_firmata/
http://shokai.org/blog/archives/6631



お次は、dinoです。

こちらはwindows環境でも利用できるようなのでwindows環境で試しました。

こちらの場合は、arduino側にbootstrapperというスケッチをアップロードしておくようです。
以下のような感じです。


arduino側のスケッチは以下にあるソースをコピーしてarudinoにアップロードします。
https://raw.github.com/austinbv/dino/master/src/du.ino


ruby側です。

まずは、インストールです。
gem install dino

以下のようなプログラムを用意します。
require "rubygems"
require "dino"

txrx = Dino::TxRx.new
txrx.io = "COM3"
board = Dino::Board.new(txrx)
led = Dino::Components::Led.new(pin: 13, board: board)

[:on, :off].cycle do |switch|
  led.send(switch)
  puts switch
  sleep 1
end

これを実行させるとLEDが点滅します。
COM3としている部分を実際利用するシリアルポートに書き換えます。

参考になるサイトは、以下のとおりです。
https://github.com/austinbv/dino
http://tutorials.jumpstartlab.com/projects/arduino/introducing_arduino.html
http://d.hatena.ne.jp/toshiaki-h/20130211/1360570837


どちらもPCと接続してrubyで操作になっていますが、
mrubyとか出てきているので、そのうちrubyスクリプトをマイコンボードにおけば動くみたいなことが近いうちに出てくるのかなぁとか期待しちゃったりしています。

4月に発売予定のenziとかいうボードがそういう感じになるのかもしれないですね。
http://enzi.cc/


前から、なんかarduinoなりを使って何かをやってみたいなぁとは思っているのですが、やることが思いつかない・・・・

2010-06-06

JapaninoのPOV用データをテキストから作る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Japaninoとは、大人の科学vol.27のおまけのArduino互換8bitマイコンです。



大人の科学vo.27ではPOVと言われる光残像で文字を書くキットが付属しています。
なかなか楽しげなのですが、ちょっと面倒なのが文字データを作ることです。
なのでテキストからこのJapaninoのPOV用データを作成するものをつくってみました。

Txt2Pov

使い方は、
テキストボックス(ABC)と書いてあるところに好きな文字(10文字まで)を入れてデータ作成のボタンを押します。
すると作成されたPOVデータイメージが表示されます。
あわせてテキストエリアにPOV用データが表示されます。

POV用データイメージはクリックすると反転して微調整できます。
テキストエリアのデータをコピーしてJapaninoのPOVサンプルデータのデータ部分を書き換えればOKです。

やっていることはActionScriptで、
・テキストを画像に変換
・変換された画像をピクセル単位で解析
をしてデータを作成してます。
抜粋版のソースを、
http://wonderfl.net/c/aBqZ
に置いておきました。

Txt2Povは、Japanino用のデータになっていますのが、http://wonderfl.net/c/aBqZを書き換えれば他のデータ形式のものを作成できると思います。

本当は、サーバー側にテキストデータを投げれば、POVデータが帰ってくる感じのWebサービスをGoogle App Engine上で創ってみようと思ったのですが、Google App Engineに用意されている画像操作系の機能ではちょっとできそうもない感じでした。
自前でサーバを持っていればPHPとかで比較的容易に実装できそうな感じではあります。

次は、HTML5でいろいろできる感じだと思ったので、Javascriptで実装しようと思ったのですが、
画像操作系のやり方がいまいちわからず挫折。
というわけでflashでやってみました。