19
GR-CITRUSRubyで遊んでみた話 2016.12.19 @paichi81 こと えだ ゆきひこ (新人)

GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

GR-CITRUSとRubyで遊んでみた話2016.12.19 @paichi81 こと えだ ゆきひこ (新人)

Page 2: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

GR-CITRUSとの出会い

• 思い起こせば1998年頃から常用する言語はRuby (腕はヘボ)

• arduinoやraspberry piは使ったことあるが、緩ユーザ(Lチカ程度)

• がじぇるね系はちょっと敷居が高い(※個人の感想です)し、ras piでいいや

• arduino互換というけど本家でいいじゃんと思っていたりもした

• ふとTwitterでrubyで開発できるボードが出るニュースを見る

• →コレだ! rubyマイコン キター!!

Page 3: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

CITRUSファーストインプレッション

• 11/19のワークショップに参加するにあたり秋月電子通商へGo!

• 安い! 安すぎる!!(2,200円) は言い過ぎにしても3,000円しない! 手頃

• arduino UNO比でI/Oも値段相応にあり、I2Cめっちゃ多い。捗りそう

• rubicのインストールも簡単で早い。早い安い上手い。まるで牛丼だ!

• 後にCrioneを知り、誰かAtom対応したら素敵なのにな..と思う(個人の感想です)

Page 4: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

セカンドインプレッションおよび情報調査

• サンプルプログラムがどうみてもarduinoまんまです、本当にありが(ry

• 秘密結社ギフハブgithubのリポジトリ

• サンプルをみてもクラス変数で@Hogeみたいな書き方があって、モヤモヤする

• そしてワークショップの最中にMacユーザがはまったPPAP問題

• Appleユーザが”APPLE”という表示できない512byteの壁→現在は解消

• あとは自動起動用にハーフピッチのジャンパがのっt...(げふんげふん

• 150円だすからピン実装してほしい...とか

Page 5: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

モヤモヤした~点

@Usb = Serial.new(0)

@Usb.println “hello, world!! Bye-bye, Jupiter!”

pinMode(13, 0x00)

10.times do

@Usb.println digitalRead(13) #=> 1,0,1...

end

Page 6: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

Rubyならこうかな?と(※個人の感想です。弱気ですが個人の感想です※諸説あります)

console = Serial.new(0)

console.puts “hello, baby!! Bye-bye, Ponytail...”

button_a = Button.new(:pin_13, INPUT_PULLUP)

10.times do

console.puts button_a.on? #=> true,false,true...

end

#たいして変わってないというツッコミは遠慮いただいております

Page 7: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

どげんかせんといけん!(懐

変わらなきゃ!(古

We can change! Yes, You can! (混乱

Page 8: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

そうだ、ファームウェア移行 (カスタム版に)

• でもCとか子供だからよくわからない

• 組み込み系とかオッサンだけど全然分からない

• →(要は年齢関係なし)

• なにはともあれ...

ロケ地:金閣寺

Page 9: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

mrubyをビルドし、firmwareに組み込む

• rubyにはgemという拡張ライブラリの仕組みが。

• mrubyにはmrbgem。ビルド時に組み込まれる。

• tarosayさん、takjnさん及びShimo-cchiさんのQiita

記事を参照

• ついでに、何となく気になっていたCITRUS用に拡

張された部分も自分好みに手直しする

• println→ puts等

詳しくはウェブで→

インターネットで

みた81%

わからない12%

しっている7%

ファームウェアの更新方法は?

えだゆきひこ調べ

Page 10: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

81gr-citrus/mruby-grcitrus-rubish

• 電気パーツをソフト的にもオブジェクトとして扱うためのgem(拡張ライブラリ)

• 単純なところでは...

btn_stop = Button.new(:pin_8) #タクトスイッチを定義

led = Led.new(:pin_7) #LEDを定義

led.on

if btn_stop.on?

led.off

System.exit

end

アップルパイナップルとかプルアップでHIGH/LOWが

変わってくるのはButtonクラスでよろしく面倒みてon?かoff?かで

判定してほしい

Page 11: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

モータを使いたい時は、こんな感じ

motor_left = MotorDriver::TA7291P.new(:pin_5, :pin_6)

motor_left.rotate #正転

delay(810)

motor_left.reverse #逆転

delay(810)

motor_left.stop #停止

#PWMのことは触れないでください (※個人のお願いです)

Page 12: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

I2C接続のLEDマトリックスを使ってみる

m = LEDmatrix::BiColor_8x8.new( :wire=>4, :addr=> 0x70 )

#配列を流し込めば、そのまま8x8ドット表示

m.buffer = [‘01111110’,’10000001’,’10200201’,’10000001’

‘10000001’,’10333301’,’01000010’,’01111110’]

m.write_display

Page 13: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

LEDマトリックスのように配列を使うものには強い!

• アニメ的な動きを追加してみる

8.times do

matrix.shift(:right)

delay(810)

end

Array(配列)や文字列操作は非常に強力。すごく楽に実装できました

Page 14: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

結論: arduino風でも書きやすくはあるが、よりオブジェクト指向らしくなった(諸説あります)

まったく! 簡! 単だ!

※個人の感想です

メモリ使用量は触れないで下さい

Page 15: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

とにかくRubyを使う

• iOSにはongaeshiさん作のmruby実行環境 RubyPico がある

• イテレーション(配列をeachしたとき)の確認や、すこし入り組んだ計算などちょっとした

コードを書いてiPhone等で実行できるステキなソリューション

• せっかくだからRuby同士GR-CITRUS/WA-MIKANで連携させたい!

• む。.................... Ruby...ピコ...だと......?!

• 外せないPPAP → Apple, Pineappleあてっこゲーム

Page 16: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

図解スレッドがないのであたり(ボタン押下)判定は実はここだけ...(--;

実のところあとは垂れ流し表示

Page 17: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

MacでPPAP アゲイン

Page 18: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

WA-MIKANについても少し

• 1,300円ポッキリでGR-CITRUSを拡張できる。

• SDスロットもついてるのに比較的安い!

• ジャンパーが多...(ry

150円払うのでハーフピッチのピン実装して

簡易マニュアルも付属できないでしょうか(涙)

Page 19: GR-CITRUSとRubyで遊んでみた話 - gadget.renesas.comgadget.renesas.com/ja/event/2016/dec/docs/8.pdf · mrubyをビルドし、firmwareに組み込む •rubyにはgemという拡張ライブラリの仕組みが。

さいごに• 安くてかわいい楽しいrubyボードをありがとう!

• ※個人の感想...じゃなくて皆さん、そう感じていると思います!

拡張しやすいフレームワークで発展性あるエコシステムに進化することを期待します!