めのん@ひとりプログラミング同好会

このブログはすべてフィクションであり、実在の人物、団体とは一切関係ありません

週末はOpenSiv3DでLチカに挑戦!

こんばんは、めのんです!

先日TwitterArduinoを使ったLチカの動画をアップされていた方がいらっしゃいました。 私もそういうのは好きなので、久々にやってみたくなりました。

ご存じない方のために補足しておくと、「Lチカ」というのはLED(発光ダイオード)をチカチカさせることです。 略して「Lチカ」です。

私は以前はハード屋でしたので、回路図を書いて結線してとやることを考えたと思うのですが、今はソフト屋ですのでちょっと違うアプローチをしてみようと思います。 どういうことかというと、業務用のLED器具を制御するのと同様の方法でLチカをやってみることにします。

業務用の照明器具というのはDMX512-A(通称DMX)という規格で制御します。 実態はRS-485で通信プロトコルが決まっています。

とはいえ、本物のLED器具を用意しようと思うとコストも馬鹿になりませんし、場所も取ります。 なので、今回はOpenSiv3Dを使ってLED器具をエミュレーションしようと思います。 それなら何台も並べることができそうです。

制御信号はDMXを直接だとエミュレーションしにくいので、イーサネットDMXの情報を送る方法を取ろうと思います。 いくつかのプロトコルがあるようで、有名なものではArt-NetやsACNというのがあります。 今回は比較的シンプルなsACNを使おうかと思います。

sACNの概要については下記ページの説明がわかりやすかったのでリンクを貼っておきます。

show-network-lab.hateblo.jp

sACNではUDPマルチキャストを使います。 今回はsACNの受信側でLED器具何台かのエミュレーションを行い、送信側では簡単な操作画面を作れたらと思います。

OpenSiv3Dは少なくともLED器具エミュレーション側で使います。 送信側はどうやって実装するかは別途考えることにします。

ところで、OpenSiv3DはUDPをサポートしていないそうです。 生ソケットでもいいのですが、せっかくなのでC++の勉強もかねて、今回はBoost.Asioに挑戦しようかと考えています。

そんなに大したものはできませんが、C++を勉強するのにちょうどいい題材が見つかってよかったです。

それでは!!