ashelの日記スマートフォン用の表示で見るashelの日記この広告は、90日以上更新していないブログに表示しています。windowというUSB接続のLEDランプを制御するプログラムを作りましたプログラム開発の現場では、チームで共有のビルドマシンを置き、そこで自動ビルドや自動テストを行うのが普通だと思います。ビルドやテストに失敗するとエラーメールが来るように設定したりするのですが、それだけでは気づきにくい場合もあります。チームによっては、マヌケな音を鳴らしたりするところもあるそうです。そもそもプログラム開発の現場というのは、理不尽が幅をきかせる恐ろしい環境ですから、多少面白いことをしたりして気を紛らわせたくなるものです。僕もビルドやテストに失敗したときに何か面白いことができないかといろいろ考えて、ちょうど一年ほど前に、「失敗したら赤いランプが付くようにしたらどうだろう」と思いつきました。ある種の見える化になりますし、失敗した感じがよく出て面白いのではないか、と思ったのです。PCからランプを制御する、というのは意外に難しいです。USBから電源を取る、というものであればたくさんあるのですが、それをプログラム的にコントロール可能なものはなかなか見つかりませんでした。このような製品もあったりするのですが、いくらなんでも高すぎます。ネットでは結局見つからなかったので、東京に行く用事があったついでに秋葉原によって探すことにしました。windowという製品です。動作が怪しくて、動く場合と動かない場合がある。わからないと店員に言われてしまうような代物ですが、USB給電でLEDを使用、青、赤、緑の三色に対応と、ハードウェアのスペックはまさに僕の理想通りです。値段もそれほど高くなかったので、早速買ってきました。難点なのは、ソフトの柔軟性が低いことです。windowというくらいなので、本来の目的はメールが来たことをユーザに知らせることであり、逆に言うと付属のソフトではそれしかできません。メールの送受信をスイッチにすることはできなくはないのですが、信頼性が低いですし、そもそもビルドマシンでそんな動作が怪しいソフトを動かすのは怖すぎます。いうことで、買ったはいいのですがお蔵入りになってしまいました。考えてみると、ハードウェアとしてそんな複雑なことをしているとは思えないですし、自分でデバイスドライバを書くという手もありそうです。いうことで今日一念発起してやってみたら、意外と簡単にできてしまいました。以下にレポートとプログラムを公開したいと思います。windowを接続すると、HIDデバイスとして認識され、自動的にマイクロソフトドライバがインストールされました。HIDデバイスというのは、マウスやキーボード、ジョイスティックのようなUSBデバイスの総称で、ある程度似通った仕組みでコントロールすることができます。デバイスマネージャを見た限りでも、普通にHIDデバイスとして機能しているように見えます。この画面でわかるのですが、ベンダIDは0x1294、プロダクトIDは0x1320となっています。windowのものになっているデバイスを探すそれにデータを送り込んでLEDを制御するということになります。問題はどのようなデータを送り込んだらLEDの付き方が変わるのかなのですが...これは正直検討が付きませんでした。そんなに複雑ではないだろうと予測できますが、最悪プロトコルを解析しなければいけません。したらWeb上に情報があるかもと思い、基板を見てみることにしました。恐ろしくシンプルな基板です。真ん中にあるのがLEDですね。複数の色のLEDがセットになった部品のようです。ICは左側に一つしかないので、これがUSBの制御もしているはずですが、刻印も何もないので調べようがありません。残念ながら、基板からは情報が得られませんでした。手当たりしだいにデータを送ってみるしかなさそうです。Kitが必要のようです。windowを認識して、データを送り込むことができてしまいました。0を送ると付かないまま。1だと...緑になる。いうことは...と考えて、7を送ると、白色になりました。つまるところ、bit0,bit1,bit2に対してそれぞれ緑、赤、青が割り振られており、bitが立っている色が付くということのようです。LEDが付かない状態も含めると、8状態あることになります。黄色もできるというのは説明書になかったので儲けた感じでした。赤がビルドの失敗、黄色がテストの失敗というような感じで使い分けられそうです。写真の撮り方がうまくなくて、光量が少ない感じになっていますが、実際には結構目立ちます。いうわけで、サンプルを元に作ったのがgithubに上がっているプログラムです。[r|g|b|rg|rb|gb|rgb|none]のような感じで、付けるLEDの色を指定します。rgbでは全てのLEDが付くので白になります。非常駐で、LEDのパターンを変えたらすぐに終了します。点滅させるような用途だと、終了せずに一定間隔でスリープしながら動作するようにプログラムを修正した方がよいですね。windowを持っている方で、使ってみたいという方は、README.txtに書いてある手順でビルドしていただけたらと思います。Kitのサンプルの優秀さに助けられた感じでした。マイクロソフトだと思います。いうデバイスはプログラムの制御次第でいろいろ面白い使い方ができそうで、楽しいですね。月別アーカイブはてなブログをはじめよう!ashelさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。