Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
GR-CITRUSとRubyで遊んでみた話2016.12.19 @paichi81 こと えだ ゆきひこ (新人)
GR-CITRUSとの出会い
• 思い起こせば1998年頃から常用する言語はRuby (腕はヘボ)
• arduinoやraspberry piは使ったことあるが、緩ユーザ(Lチカ程度)
• がじぇるね系はちょっと敷居が高い(※個人の感想です)し、ras piでいいや
• arduino互換というけど本家でいいじゃんと思っていたりもした
• ふとTwitterでrubyで開発できるボードが出るニュースを見る
• →コレだ! rubyマイコン キター!!
CITRUSファーストインプレッション
• 11/19のワークショップに参加するにあたり秋月電子通商へGo!
• 安い! 安すぎる!!(2,200円) は言い過ぎにしても3,000円しない! 手頃
• arduino UNO比でI/Oも値段相応にあり、I2Cめっちゃ多い。捗りそう
• rubicのインストールも簡単で早い。早い安い上手い。まるで牛丼だ!
• 後にCrioneを知り、誰かAtom対応したら素敵なのにな..と思う(個人の感想です)
セカンドインプレッションおよび情報調査
• サンプルプログラムがどうみてもarduinoまんまです、本当にありが(ry
• 秘密結社ギフハブgithubのリポジトリ
• サンプルをみてもクラス変数で@Hogeみたいな書き方があって、モヤモヤする
• そしてワークショップの最中にMacユーザがはまったPPAP問題
• Appleユーザが”APPLE”という表示できない512byteの壁→現在は解消
• あとは自動起動用にハーフピッチのジャンパがのっt...(げふんげふん
• 150円だすからピン実装してほしい...とか
モヤモヤした~点
@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
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
#たいして変わってないというツッコミは遠慮いただいております
どげんかせんといけん!(懐
変わらなきゃ!(古
We can change! Yes, You can! (混乱
そうだ、ファームウェア移行 (カスタム版に)
• でもCとか子供だからよくわからない
• 組み込み系とかオッサンだけど全然分からない
• →(要は年齢関係なし)
• なにはともあれ...
ロケ地:金閣寺
mrubyをビルドし、firmwareに組み込む
• rubyにはgemという拡張ライブラリの仕組みが。
• mrubyにはmrbgem。ビルド時に組み込まれる。
• tarosayさん、takjnさん及びShimo-cchiさんのQiita
記事を参照
• ついでに、何となく気になっていたCITRUS用に拡
張された部分も自分好みに手直しする
• println→ puts等
詳しくはウェブで→
インターネットで
みた81%
わからない12%
しっている7%
ファームウェアの更新方法は?
えだゆきひこ調べ
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?かで
判定してほしい
モータを使いたい時は、こんな感じ
motor_left = MotorDriver::TA7291P.new(:pin_5, :pin_6)
motor_left.rotate #正転
delay(810)
motor_left.reverse #逆転
delay(810)
motor_left.stop #停止
#PWMのことは触れないでください (※個人のお願いです)
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
LEDマトリックスのように配列を使うものには強い!
• アニメ的な動きを追加してみる
8.times do
matrix.shift(:right)
delay(810)
end
Array(配列)や文字列操作は非常に強力。すごく楽に実装できました
結論: arduino風でも書きやすくはあるが、よりオブジェクト指向らしくなった(諸説あります)
まったく! 簡! 単だ!
※個人の感想です
メモリ使用量は触れないで下さい
とにかくRubyを使う
• iOSにはongaeshiさん作のmruby実行環境 RubyPico がある
• イテレーション(配列をeachしたとき)の確認や、すこし入り組んだ計算などちょっとした
コードを書いてiPhone等で実行できるステキなソリューション
• せっかくだからRuby同士GR-CITRUS/WA-MIKANで連携させたい!
• む。.................... Ruby...ピコ...だと......?!
• 外せないPPAP → Apple, Pineappleあてっこゲーム
図解スレッドがないのであたり(ボタン押下)判定は実はここだけ...(--;
実のところあとは垂れ流し表示
MacでPPAP アゲイン
WA-MIKANについても少し
• 1,300円ポッキリでGR-CITRUSを拡張できる。
• SDスロットもついてるのに比較的安い!
• ジャンパーが多...(ry
150円払うのでハーフピッチのピン実装して
簡易マニュアルも付属できないでしょうか(涙)
さいごに• 安くてかわいい楽しいrubyボードをありがとう!
• ※個人の感想...じゃなくて皆さん、そう感じていると思います!
拡張しやすいフレームワークで発展性あるエコシステムに進化することを期待します!