Arduino 5) タイマー処理を考える。
2016.11.28
タイマー処理は特定の周期でプログラムを実行させたいときにとても便利な機能です。
単純に待ち時間を設けたいだけならdelay()を指定するだけでいいのですのが、
プログラムが複雑になってくるとコードが汚くなるだけでなく、
正確なタイミングでコードを走らせることも難しくなっていきます。
そこでタイマーによるインタラプト処理を試してみました。
MsTimer2.zip
http://playground.arduino.cc/Main/MsTimer2
このコードを作るに当たって、ちょっと悩みました。
LCDの表示をtimercount()内に記述しても実行されないのです。
なぜかスルーされます。
loop()内に書くことで上手く表示されました。
追求すると沼にハマりそうなので、ここはそういう物という理解でいきます。
ただ、Windows系のプログラムに慣れてしまうと、これだけではちょっと物足りないですね。
できれば、タイマーを複数同時に走らせたいところ。
そこで調べてみると、複数同時に動かせるライブラリがあるようですね。
マルチタスクが実装されていないArduinoでどのように実現しているのでしょう?
Metro-Arduino-Wiring-master.zip
http://playground.arduino.cc/Code/Metro
2つ同時に動くタイマーを記述してみました。
どこまで正確に時を刻んでいるかは謎ですが、うまく機能しているようです。
でも、求めている物が微妙にちがう。
このライブラリは割り込みが起きたときのフラグを保持して
loop()内で判別して処理するというもの。
こうなるとloop()内に重い処理を書いてしまうと、
正確な時間を刻むことは難しい。
一長一短ですねぇ。
結局は最初に実験したMsTimer2.hを駆使し、
コーディングでなんとかするしか無さそうです。
先人のソースコードを沢山読み解けば
もっといい書き方があるのかもしれませんが・・・
単純に待ち時間を設けたいだけならdelay()を指定するだけでいいのですのが、
プログラムが複雑になってくるとコードが汚くなるだけでなく、
正確なタイミングでコードを走らせることも難しくなっていきます。
そこでタイマーによるインタラプト処理を試してみました。
MsTimer2.zip
http://playground.arduino.cc/Main/MsTimer2
このコードを作るに当たって、ちょっと悩みました。
LCDの表示をtimercount()内に記述しても実行されないのです。
なぜかスルーされます。
loop()内に書くことで上手く表示されました。
追求すると沼にハマりそうなので、ここはそういう物という理解でいきます。
ただ、Windows系のプログラムに慣れてしまうと、これだけではちょっと物足りないですね。
できれば、タイマーを複数同時に走らせたいところ。
そこで調べてみると、複数同時に動かせるライブラリがあるようですね。
マルチタスクが実装されていないArduinoでどのように実現しているのでしょう?
Metro-Arduino-Wiring-master.zip
http://playground.arduino.cc/Code/Metro
2つ同時に動くタイマーを記述してみました。
どこまで正確に時を刻んでいるかは謎ですが、うまく機能しているようです。
でも、求めている物が微妙にちがう。
このライブラリは割り込みが起きたときのフラグを保持して
loop()内で判別して処理するというもの。
こうなるとloop()内に重い処理を書いてしまうと、
正確な時間を刻むことは難しい。
一長一短ですねぇ。
結局は最初に実験したMsTimer2.hを駆使し、
コーディングでなんとかするしか無さそうです。
先人のソースコードを沢山読み解けば
もっといい書き方があるのかもしれませんが・・・
リングライトを買ってみた。
2016.11.28
夜に机上で撮影することがおおいので、
どうしても自分自身の影が写りこむことが多かったのですが、
いよいよリングライトが必要かな?と考えていました。
3Dプリンターで作ることも考えたのですが、
中華のリングライトがビックリするほど安くなっているので
作るより安く上がりそうなので、買ってみることにしました。
NEEWERの一眼用リングライト。
高輝度のLEDを48灯使用。
49、52、55、58、62、67、72、77mmのレンズに対応。
オレンジ、ブルー、ホワイト、透明色のデフューザー付属。
この値段で液晶表示のパワーコントローラー付属(7段階の輝度調整)
LED左半点灯、右半点灯、全点灯(左右両方)の切り替えが可能。
電源は単三電池4本。
値段の割に十分すぎる内容ですが、はたして・・・・
電源を入れるのが最初わかりませんでしたが、
数秒長押しでした。
光量は十分。最初100灯は必要かと考えていましたが、
室内灯とのバランスを考えれば48灯でもいけますね。
ライトからパワーコントローラーまでのケーブルは結構長く、
かなりの長物でも取り付けできそう。
ライトの固定はもっと安っぽいギミックかと思っていたら、
バネ式ボタン2つで固定というカメラ部品っぽい仕組みで
思いのほかしっかりできています。
ボディがプラなので安っぽいというレビューを見かけましたが、
1万以上のものでも、こんなものでしょう。
逆に3000円未満でこのクオリティなのかとちょっと驚きました。
ガワをシボ加工でもすればもっと高級感でるんでしょうが、
それは高望みですね。
一つ弱点を言えば、ホットシューを付けるパーツの強度が甘い気がします。
コントローラーを煽れば折れそうな雰囲気。。。
そうなったら3Dプリンターで作り直すだけですが、
ここが金属であったなら最強。
試し撮りをしてみます。
先日、某掲示板で「猫祭り」なるベンチマーク競争が行われておりましたが、
私も触発されて印刷してみました。
0.2mm積層 ABS印刷です。
夜中の撮影でしたが、ISO800での手持ちですが私自身の影も消されて綺麗に取れています。
被写体に光がしっかり当たって立体感もでてますね。
効果絶大です。
試しにISO400でも実験しましたが、1/30秒でてます。
脇をしっかり締めれば手持ちも十分いけます。
これはとんでもない武器を手に入れたぞ。
どうしても自分自身の影が写りこむことが多かったのですが、
いよいよリングライトが必要かな?と考えていました。
3Dプリンターで作ることも考えたのですが、
中華のリングライトがビックリするほど安くなっているので
作るより安く上がりそうなので、買ってみることにしました。
NEEWERの一眼用リングライト。
高輝度のLEDを48灯使用。
49、52、55、58、62、67、72、77mmのレンズに対応。
オレンジ、ブルー、ホワイト、透明色のデフューザー付属。
この値段で液晶表示のパワーコントローラー付属(7段階の輝度調整)
LED左半点灯、右半点灯、全点灯(左右両方)の切り替えが可能。
電源は単三電池4本。
値段の割に十分すぎる内容ですが、はたして・・・・
電源を入れるのが最初わかりませんでしたが、
数秒長押しでした。
光量は十分。最初100灯は必要かと考えていましたが、
室内灯とのバランスを考えれば48灯でもいけますね。
ライトからパワーコントローラーまでのケーブルは結構長く、
かなりの長物でも取り付けできそう。
ライトの固定はもっと安っぽいギミックかと思っていたら、
バネ式ボタン2つで固定というカメラ部品っぽい仕組みで
思いのほかしっかりできています。
ボディがプラなので安っぽいというレビューを見かけましたが、
1万以上のものでも、こんなものでしょう。
逆に3000円未満でこのクオリティなのかとちょっと驚きました。
ガワをシボ加工でもすればもっと高級感でるんでしょうが、
それは高望みですね。
一つ弱点を言えば、ホットシューを付けるパーツの強度が甘い気がします。
コントローラーを煽れば折れそうな雰囲気。。。
そうなったら3Dプリンターで作り直すだけですが、
ここが金属であったなら最強。
試し撮りをしてみます。
先日、某掲示板で「猫祭り」なるベンチマーク競争が行われておりましたが、
私も触発されて印刷してみました。
0.2mm積層 ABS印刷です。
夜中の撮影でしたが、ISO800での手持ちですが私自身の影も消されて綺麗に取れています。
被写体に光がしっかり当たって立体感もでてますね。
効果絶大です。
試しにISO400でも実験しましたが、1/30秒でてます。
脇をしっかり締めれば手持ちも十分いけます。
これはとんでもない武器を手に入れたぞ。