EOS ストロボ光通信5

E-TTL2のストロボ制御と制御部分のクラス化を実施。

E-TTL2での光通信

発光パターンに関しては、EOS ストロボ光通信1にあるので割愛する。

パルスをビットパターンで表すと、以下のような形になった。

  • プリ発光パラメータ
    0b110000110001000XXXXX
  • 本発光パラメータ
    0b110011110001010XXXXX

最後のXXXXXは、発光量を数値化したものをLSBファーストしたパターンが格納される。


上のはプリ発光パラメータのパターンなのだが、発光量は18となる。

実装

GitHub - take4blue/IRStrobeControl
Contribute to take4blue/IRStrobeControl development by creating an account on GitHub.

githubにアップしておいた。
今後も改良していくと思うので、今回の実装した部分に関してVer5というタグ付けをしておいた。

次に、実際のプログラムの中身について。

今回IREosStrobeというクラスを作成し、このクラス内で赤外線の発光管理をすることにした。

setメソッドで、送信種別(マニュアル、E-TTL2プリ発光、E-TTL2本発光)の指定、光量の指定が可能になっている。

実際の赤外線の発光は、sendParameter、flashを順に呼び出すことで実現するようにしている。
これらの扱いは、main関数内を参照。

sendParameterでは送信用データを作成するため、光量の指定がLSBファーストの理由から、「E-TTL2での光通信」で記述しているパラメータのビットパターンの逆順にして実装している。

その他

E-TTL2のプリ、本発光の代わりに、マニュアル発光をE-TTL2と同じタイミングで発光させたら、E-TTL2と同じようなストロボの発光が確認できた。
早めの発光指示でも対応できていたようだ。

また、E-TTL2プリ発光で18以外の光量を指定した場合も、指定された値でストロボが発光されたのも確認できた。

プログラム作成の初期段階では、ストロボがうまく発光してくれなくて、理由を探るのにロジックアナライザでIOの状態を何度も確認する状態が続いた。
ロジックアナライザを買っておいてよかった。

コメント

タイトルとURLをコピーしました