2019-09-14
Python編に続いて、国産言語Rubyでも、IchigoJamを制御してみましょう!

まずは、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 でサクサク楽しい組み込みアジャイル開発

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS