まずは、IchigoJamにUSBシリアルをつなぐか、IchigoKamuyを準備。
RubyでUSBシリアルを使うには、serialport gem を使います。
$ gem install serialport
USBシリアルのポート(port)を /dev/tty.〜 または COM3 などで指定し、LEDをつけるプログラム(test.rb)はこちら
require 'serialport' port = '/dev/tty.SLAB_USBtoUART' ser = SerialPort.new(port, 115200) ser.puts("LED1\n") p ser.gets
動かしてみましょう
$ ruby test.rb OK
光りました!(USBシリアルの制御、PythonよりRubyの方が短くわかりやすく書けました)
クラス IchigoJam.rb を作って楽しましょう!
require 'serialport' class IchigoJam def initialize @port = '/dev/tty.SLAB_USBtoUART' @ser = SerialPort.new(@port, 115200) end def puts(s) @ser.puts(s) end def gets @ser.gets end end
あとはこのクラスを使い回せばOKです!(@portに設定する値は、お使いの環境に合わせて書き換えてください)
LEDを1秒光らせる、Ruby編はこちら。
require './IchigoJam' ser = IchigoJam.new ser.puts("LED1\n") puts ser.gets ser.puts("WAIT60\n") puts ser.gets ser.puts("LED0\n") puts ser.gets
コマンドラインで気軽に使える command.rb を用意して
require './IchigoJam' ser = IchigoJam.new ser.puts("#{ARGV[0]}\n") puts ser.gets
1行、かんたんハードウェア制御!
$ ruby command.rb LED1
ちょっと複雑な例、IchigoJam BASICのプログラムを転送し、PCの何かキーが押されたらESC信号を送って止めるRubyプログラム
require './IchigoJam' ser = IchigoJam.new ser.puts("1 LED1:WAIT10\n") ser.puts("2 LED0:WAIT10\n") ser.puts("3 GOTO1\n") ser.puts("RUN\n") require 'io/console' key = STDIN.getch ser.puts("\x1b") # ESC puts ser.gets
いろいろ自在にできますね!
IchigoJam 1.4βファームウェアを使えば、マイコン内蔵フルカラーLEDのまとめて制御もこのように簡単!(リファレンス)
$ ruby command.rb 'LET[0],0,10,0:WS.LED1,50'
ネットで取得したデータと組み合わせれば、派手なお知らせが実装できますね!
その他、いろいろサンプルプログラム in Ruby はこちら。
「IchigoJam/IchigoJam-control-by-ruby: IchigoJam control by Ruby」
PythonでもRubyでもJavaScriptでも、得意な言語で楽しいハードウェアの世界をのぞいてみましょう!
Rubyなら、IchigoJamマイコン上でも動く、Ruby on Jam もあります。
links
- Pythonで操るフルカラーLED50コ、USBシリアル x IchigoJam x Python編!
- IchigoJamでパソコンとUSBシリアル通信。Node.jsを使うとキーボードとモニタいらず – しずかなかずし
- 実機転送実行まで1秒! Ruby on Jam でサクサク楽しい組み込みアジャイル開発