RBC勉強会で組み込みRuby
25日土曜日に福岡Rubyコンテンツセンターで久しぶりのRBCの勉強会が開かれました。
福岡CSKさんのご協力で開発中の製品を使わせて頂きました。
http://enzi.cc/
この製品の説明は上のサイトにお任せするとして、僕個人的にはハードウェアを触るのは20年ぶりで、抵抗の読み方とかコードの色の話は「あーそんなんあったよね、中身覚えてないけど」という感じのダメっぷりです。かろうじてLEDとか抵抗の役割くらいは分かる感じ。
そんな感じなので、いきなりボードを渡されても何をしたらいいのか分からんとなってしまいましたが、福岡CSK三牧さんが最初にLEDを光らせる「LEDチカチカ」略して「エルチカ」のデモを見せてくれたので、まずはそれを真似することを目標にしました。
まずはプログラムなしで、LEDを点灯させる配線をつないだだけで、光った「おー」と喜ぶ初心者っぷり。
次は、配線を変えてデジタルのIOにつないで、いよいしょエルチカを体験。
https://github.com/akm/rbc_mruby/blob/master/cds.rb#L19
enziの開発のサイクルはかなリ分かりやすかったです。
1. プログラムを記述
2. サイトのシミュレータでコンパイル=>実行ファイルダウンロード
3. SDカードに実行ファイルをコピー
4. ボードにSDカードを挿入
5. ボードを再起動
6. ターミナルで出力を確認(問題があったらターミナルで分かる)
7. 1に戻る
コンパイルの時間とか考えるとAndroidの実機テストより軽い感じです。
で、三牧さんのコードで動くことを確認したら、ちょっと要領が掴めてきたので、光センサを使ったものを作ろうということになりました。光センサが明るさを感じなかったらLEDを点灯し、明るさを感じたら消灯するというものです。
ちなみにCdSと硫化カドミウムの意味で、正しくは「硫化カドミウムセル」という名前の「フォトレジスタ」というものなのだそうです。
http://ja.wikipedia.org/wiki/フォトレジスタ
使った製品はこちら。
http://doc.chipfind.ru/hamamatsu/p3807r.htm
やってみてわかったんですが、通常は0を出力していて、暗くなると正の値を返すんですね。なるほどー。やってみると非常にわかりやすい。書いたコードがこちらです。 https://github.com/akm/rbc_mruby/blob/master/cds.rb#L6
で、ここらへんでだいぶわかってきたので、今回誰もやらないであろうと予想されていた通称「7セグ」を選択してみることに。
製品のマニュアルはこちら
http://rohmfs.rohm.com/en/products/databook/datasheet/opto/led_display/numeric/lb-603fp.pdf
うひー、意味わかんねー。
三牧さんや前席の古川さんのアドバイスとペアを組んだウチダさんの見事な回路構成によって、なんとかなっちゃうものなんですね、かなりサクッと書けました*1。
https://github.com/akm/rbc_mruby/blob/master/led_display.rb
で、実際に動いたものがこれです。
http://www.youtube.com/watch?v=7zLfmLnpnSM
もうこれができたらだいぶ満足してしまって、色々デバイス使いたいよねーとかネットワーク繋ぎたいとかそんな話をしていました。
他のペアの皆さんも温度センサを使ってLED RGBを制御したりしてました。とても楽しい勉強会でした。
僕らが作ったものは冷静に考えると特に大したモノではないんですが、13:00 に始まった勉強会で、16:00にはこれが出来上がっていたのは素晴らしい敷居の低さだと思います。これでちょっとハードウェアに近づくことができたかなと思えました。
実際のものづくりはもっと色々考えなきゃいけないことがたくさんあるんだと思いますが、初心者にとっては入り口を広げるためにとても強力なツールだと思います。
製品のリリースが待ち遠しいです。
http://enzi.cc/
ボードを貸していただいた福岡CSKの岡部さん、石井さん、三牧さん、勉強会を開いて頂いた島村さん、他さんかしてくださった皆さん、ありがとうございました。
*1:currをcuurと間違えたので時間的に結構ロスしましたがw