11
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

mruby on GR-CITRUS

GR-CITRUSRuby inside がプリントされたマイコンを搭載したボードです。
Ruby で簡単にガジェットを楽しむことができます。

Mac OS X で GR-CITRUSLチカ を実行するまでの手順を紹介します。
(brew がインストールされていれば、数分で チカチカ します。)

citrus_led

Learning

  • Mac OS X で GR-CITRUSLチカ を実行する。
    • Windows 設定はこちらのドキュメントを参照してください。
    • Lチカ 以外のサンプルはこちらを参照してください。

Environment

  • OS X : El Capitan
  • mruby : 1.2.0
  • CoolTerm : 1.4.6

Install

  • brew コマンドで mruby をインストールします。
  • brew cask コマンドで CoolTerm をインストールします。
$ brew install mruby
$ brew cask install coolterm

mruby

mruby_icon

まずは、mruby のバイナリを作成します。

Sample code

  • サンプルのコードを main.rb ファイルに保存します。
#!mruby

serial = Serial.new(0)
serial.println "Hello, mruby."

10.times do |i|
  serial.println "#{i}: led #{i % 2}"
  led i % 2
  delay 500
end

Compile

  • mrbc コマンドでコンパイルすると、main.mrb ファイルが出力されます。
  • wc コマンドで main.mrb ファイルのバイト数を出力します。
    • バイト数はファイルの送信で参照する値です。
$ mrbc main.rb
$ wc -c < main.mrb
     335

CoolTerm

coolterm_icon

つぎは、mruby のバイナリを送信します。

Connect

  • マイクロUSBケーブルGR-CITRUS に接続します。
    • 充電専用のケーブルは使用できません。
  • CoolTerm を起動して、Options をクリックします。
  • Port に 接続したポートを選択します。
    • これは usbmodem1_1 を選択しています。
  • 該当のポートがない場合は、Re-Scan Serial Ports をクリックします。
    • ls /dev/tty.* コマンドでもポートがわかります。

coolterm_port

  • TerminalEnter Key EmulationLF を選択します。

coolterm_key

  • Connect をクリックして、接続が成功すると WAKAYAMA.RB Board が表示されます。
  • >>>>>>>>>> が止まらない場合は、T を入力します。

coolterm_t

Execution

  • ファイルを送信して実行するには、X main 335 を入力します。
    • X はコマンドです。
    • main は保存されるファイル名です。
    • 335 は送信するバイト数です。
  • 送信は、Connection から Send Textfile をクリックして、ファイルを選択します。
    • ファイルの ドラッグ&ドロップ も対応しています。

coolterm_send

  • ファイルが保存されると、プログラムが実行されます。

coolterm_exec

チカチカしましたね!

GR-CITRUSWA-MIKAN を組み合わせると WiFi通信 がガジェットで実装できます。

Functions

GR-CITRUSArduino と互換性のあるメソッドが使えます。

Digital I/O

  • サンプルのコードの leddigitalWrite に変更します。
    • これは 11 のピンを使用します。
#!mruby

serial = Serial.new(0)
serial.println "Hello, mruby."

pinMode(11, 1)

10.times do |i|
  serial.println "#{i}: led #{i % 2}"
  digitalWrite(11, i % 2)
  delay 500
end
  • LEDCRDブレッドボード に設置します。
    • LEDCRD は極性に注意しましょう。
  • 11+ を接続します。GND- を接続します。
  • 再びコンパイルをして、ファイルを送信します。

digital_write

チカチカしましたね!

Congrats!

TIPS

Debug

  • 開発でバグが発生したときは デバック をします。
  • mrbc コマンドでデバックする方法を紹介します。

Bug

  • このサンプルのコードには バグ があります。
#!mruby

serial = Serial.new(0)
serial.println "Hello, mruby."

10.times do |i|
  serial.println "#{i}: led #{i % 2}"
  led i % 2
  delay
end
  • エラーが発生しました! でも、どこか分かりませんね。
>X main 331

Waiting  60 59 58 57 56 55 54 53 52 51 50
main.mrb(331) Saving...
Hello, mruby.
0: led 0
ArgumentError: wrong number of arguments

Debugging

  • mrbc -g コマンドでコンパイルすると、コードのサイズが大きくなります。
$ mrbc -g main.rb && wc -c < main.mrb
     444
  • エラーが発生しました! でも、ファイル名と行番号が表示されています。
  • delay に引数を指定していないことが分かりましたね。
>X main 444

Waiting  60 59 58 57 56 55 54 53 52 51 50
main.mrb(444) Saving...
Hello, mruby.
0: led 0
main.rb:9: wrong number of arguments (ArgumentError)

デバックの -g オプションは GR-CITRUS の開発者の tarosay さんから オススメ されました。

enjoy mruby

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
11
Help us understand the problem. What are the problem?