コメを噛め

コメを噛め

rerofumi の電子工作メモ

Archive for 8月, 2010


hatena bookmark

うまくいかなくて悩んでいるけれども途中で掲載。

otk_base_ss02
前回の「IronRuby で OpenGL」の続き。といっても、表示して確認しながら作りたかったプログラムの方。
何かというと2つの三角形が重なっているとき、それを合成した図形を計算したいというもの。シンプルながらやってみるとなかなかに難しくて。久々にベクターや外積などと取っ組み合い。

なんでもいいから合成後の形状が得られれば良いというわけでなく、2つの要求が存在している。

1) 合成後は細かい三角形の集合として得られること
2) 分割後の三角形は接するもの同士頂点を共有し同じ辺の長さであること

1) はとりあえずこれを満たせば後は繰り返しでどんな形でも作業することが可能になるので。

otk_base_ss03
2) が地味にやっかいなのだけれども、これは最終的に欲しいのが合成した形状の外周だから。
三角形の集合にしておけば、線分に分割して見たとき「共有されていない辺が外周」であると後で抽出できるため。

otk_base_ss04
ここ一週間ぐらい取り組んでいて大分形になってきたけれども、まだまだ不完全。
三角形二つがくるくると回りながら移動し交わったら合成処理を施すようなデモを作って確認しているところ。くるくる回りながらということで、任意の状態を幾重にも作りだすことと等価。全ての場面でうまくいくことを見たいのだけれども、まだうまいこといかないパターンがあって割としょっちゅう破綻している。
ある程度のテストパターンは作って作成していったのだけれども、その範囲内でうまくいっても任意形状ではダメというのはありがちなれど辛いのう。

今の段階でのソースコード。くるくる回るデモを含んでいるので IronRuby で OpenGL のテストコードその2 としてもどうぞ。

Download: ironruby_gl_fw_02.zip (11kb)

その道の偉い人からみたらもっとスマートな手順があるんだろうなあ。
というか、力業なコードになりつつあるのが切ない。


hatena bookmark

otk_base_ss1
ちと ruby で計算した結果をグラフィカルに確認したくなったので、.NET の OpenGL バインドである OpenTKIronRuby からまともに使ってみることにした。
ライブラリを使うだけなのでさくっと画面が表示成功。あとは OpenGL ベースで好き勝手できるようになったところで成果をお裾分け。

IronRuby を用意するという特殊性はあるものの、上の画面の様な三角形が簡単に表示できるのです。今実験しているのが平面の図形計算だからテストは平面な三角形だけれども、3DCG で表示されていて、マウスドラッグでくるくる回せる様になっている。

Download: ironruby_gl_fw_01.zip (5kb)

IronRuby と OpenTK は .NET 環境で動くので、MONO を使って MacOSX 上で動作させることも可能。
otk_macosx_shot
Linux は試していない。

IronRuby上で OpenTK を使う手順として codepad に置いてあった「OpenTKのサンプルをIronRubyに移植してみた」を参考にさせてもらった。ここに情報がないので作者が不明なのだけれども、あれくまさんが作ったということでいいのかな?
あと OpenTK のサンプル(C#)とドキュメントを見てた。
IronRuby + OpenTK というか OpenTK 自体情報が少ないのでこんなソースでも何かの役に立つんじゃないかと思う。

ここ最近、なにかアプリケーションが作りたいとき何で構築するのが最善かなあと考えていた。マルチプラットフォームでOpenGLも使えてというと Java が一番近いのだけれども、Linux も考えると簡単かなあと疑問に思ったり、そもそもで Java はなんか最近離れてしまったのでやりたくなかったり。
できれば ruby で楽しく作ってお気軽にマルチプラットフォームできると良いのだけれども、ruby は GUI フレームワークが弱すぎるという難点が。
色々考えているうちに MONO がかなり良くなってきているので、.NET framework で作ればマルチプラットフォーム化が容易だというあたりに落ち着いてきた。Windows forms で作っておけばたくさんの環境でだいたい動作させる事ができる。
調べてみるとシリアルポートも含まれているので、環境毎にドライバーを用意しなくても同一コードでシリアルにアクセスもできる。マイコン工作系にとってかなり心強いところ。
.NET framework で OpenGL を扱えるバインディングには OpenTK が登場してなかなか評判も良い。
でそんな GUI 周りをそのまま利用できる ruby 環境として IronRuby があるわけだ。(Python派には IronPython)
試してみたら MONO で IronRuby を使うのもそんなに難しくなかった。特にこだわりがあるので無い限り、スタンダードな ruby そのままな形でプログラミングできるし GUI も作成することが可能だ。

そんなこんなで個人的な好みにマッチングしている IronRuby + OpenTK で、ちょこっとしたアプリを作成できるのではないかという結論に至ったのである。
今回のソースはその第一歩。


hatena bookmark

そんなこんなで「ほんのりさん」が完成しましたが、2〜3セットは作成できるパーツ在庫がありますので実費でお分けすることができます。
特に、Makerbot の純正 H.B.P. V2 をお持ちの方で使えることをレビューしてくれるひとはいませんかね?

今回は基板を枚数作っていないので単価が高く頒布価格が5000円ほどになってしまいますが、それでもという方がいましたらご連絡ください。

[追記 Aug.08.2010 23:15]
欲しいと言ってくれる人がどれくらいいるのか不安だったのですが、即座に希望者が現れて驚いています。
ちょいと慌てながら手元の部品を整理してみましたが、正確に 3セット分ありました。既に 2セット分の引き合いがあるので今現在 1セット分の在庫があります。それ以上の引き合いについては、部品の取り寄せ購入をしてからのお渡しになるのでちょいと日数をいただくことになります。

ご希望されるかたは私あてのメールか、この記事へのコメントでご連絡ください。

お支払い方法はかなでのときと同じで良いのですがPayPalが今一時的に使えなくなっていたりいくつかのサービスはなくなっていたりして面倒なので、一番楽なアマゾンギフト推奨としておきますね。


hatena bookmark

honnori_fig1

ハードが完成したのでファームも完成させて Ver1.0 とした。
以前の版に比べての改良点は。

  • サーミスタの温度テーブルを Extruder2 のソースで使われているテーブルを流用、Extruder使用時とほぼ同じ数字が出るようになった
  • 真ん中ボタンでのヒーターOFF時に設定されていた目標温度を保存し、次回起動時にその温度が表示されるようにした
  • 温度上げ下げボタンにキーリピートをつけた
  • LCD表示を 16×2 のレイアウトに合わせて改変した

といったあたり。

PSoC Designer5.0 用のプロジェクトファイル&バイナリHEX
Download: hotplate_controller_v100.zip

ホットプレートコントローラー基板こと、「ほんのりさん」はこれにて完成となります。


hatena bookmark

honnori_icon1
CupcakeCNC 向けのホットプレート制御基板に「ほんのりさん」という名前をつけて、P板.com で製造してみた。

DSC00666DSC00662
つつがなく完成。配線ミスもなくいいかんじ。

DSC00664
毎度のシルク絵もこんな感じで仕上がっています。

Download: hotplate_controller_02.zip
基板の K2CAD 設計データと、gerber データの詰め合わせ。
gerber の方はそのまま出せば製造できるんでないかな。(デザインルールが許容範囲であればだけれども)

もうちょっとファームを改良する予定。