Arduinoで水滴をキャプチャする
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
![]() |
| × | 3 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
このプロジェクトは、この分野の写真を試したいという憧れの結果として生まれました。以下に、水滴の高速写真を作成するために作成したArduinoベースの簡単なセットアップを示します。
まず、手動設定と外部フラッシュライトを備えたフォトカメラが必要です。どちらもリモートコントロールをサポートしている必要があります。私はSonyDSC-HX300(図1)とGODOX SY8000(図2)をケーブル付きで持っています。
<図>

図2では、注意深く絶縁され、SyncCableのPCコネクタに接続されている2本のArduinoワイヤを見ることができます。
シンプルな3ピンヘッダーを追加してリモコンを変更することにしました(図3)。
<図>
リモコン(図4)の内部には、2つの回路(«2–3»、次に、ボタンが押されているときに«1–2»)。
<図>
ピンヘッダーがインストールされたので、Arduinoを使用してプログラムでボタンの押下をエミュレートできます。
SyncCableも同じように機能します。フラッシュを発光させるには、PCコネクタの接点を短絡する必要があります。
私の目標は、水滴が水面に落ちたときの水しぶきの瞬間を捉えることでした。
セットアップを簡単にするために、一緒に組み立てられた薬のスポイトのいくつかの部品を使用しました(図5)。
<図>
レーザーモジュールKY-008とLM393ベースの光センサーモジュールが落下を検出します(図6)。
<図>
これらのモジュールは、落下する液滴がレーザービームを遮断して回路を遮断するように配置することができます。光センサーは、モジュールの可変抵抗器を回転させることにより、レーザー出力に対する感度を調整することができます。さらに、モジュールは互いに長距離に配置できます。
暗闇の中で数秒間の長時間の露出を使用して撮影が行われるため、最終的な結果には短時間のフラッシュライトのみが重要になります。
回路図を図7に示します。
<図>
セットアップは完全に自動化されていません。観察可能な液滴分離の前に、ユーザーはボタンを押します。これにより、オートフォーカストリガーとシャッタートリガーによってリモコンの接点が連続して短くなり、シャッターが数秒間開きます。また、ボタンを押すと、懐中電灯を発射できます。ドロップがレーザービームを横切ると、フラッシュライトトリガーがPCコネクターの接点を短絡し、フラッシュライトが点灯します。レーザービームを交差させてからSyncCableの接点を短くするまでの時間は、ポテンショメータによって1〜500ミリ秒の範囲で調整されます。 (制限はコードで変更できます)。このようにして、スプラッシュのさまざまな瞬間をキャプチャできます。次のドロップでは懐中電灯は点灯しません。この機能を有効にするには、ボタンをもう一度押す必要があります。
アセンブリを図8に示します。
<図>
上記の回路に光カプラを追加して、高電圧のフラッシュライトを低電圧の電子機器から分離することができます。
主なコードパラメータを図9に示します。プロジェクトはArduinoNanoに基づいています。
<図>
フラグ«DBG_MODE»は、レーザーモジュールと光センサーモジュールの両方の予備的な配置と調整を目的としています。このモードでは、カメラもフラッシュライトも使用されません。 Arduinoボードの内蔵LEDはインジケーターとして機能します。
セットアップを調整するには、フラグのコメントを外し、コードをコンパイルしてArduinoをフラッシュします。設定が正しければ、ボタンを押すとLEDが点灯し(シャッターシミュレーション)、液滴がレーザービームを横切るとLEDが消灯します(懐中電灯発射シミュレーション)。
セットアップがうまく機能したら、フラグをコメントバックし、コードをコンパイルして、Arduinoを再度フラッシュします。
このコードには、次の定数も含まれています。
・このプロジェクトのコンポーネントが接続されているArduinoピン。
・オートフォーカス、シャッター、またはフラッシュライトの接点が短絡しているときに適用される遅延。
・ポテンショメータによって調整可能な時間範囲の制限。
いくつかの結果を図10–12に示します。
<図>


コード
- 無題のファイル
無題のファイル Arduino
//#define DBG_MODEconst byte BUTTON_PIN =2; const byte FOCUS_PIN =3; const byte SHUTTER_PIN =4; const byte FLASH_PIN =5; const byte SENSOR_PIN =6; const byte RESISTOR_PIN =A5; const unsigned int FOCUS_DELAY =100; const unsigned int SHUTTER_DELAY =100; const unsigned int FLASH_DELAY =10; const unsigned int FIRE_DELAY_MIN =1; const unsigned int FIRE_DELAY_MAX =500; boolean prevButton、currButton; boolean prevSensor、currSensor; boolean allowFlash #ifndef DBG_MODE digitalWrite(FOCUS_PIN、HIGH); delay(FOCUS_DELAY); digitalWrite(SHUTTER_PIN、HIGH); delay(SHUTTER_DELAY); digitalWrite(SHUTTER_PIN、LOW); delay(FOCUS_DELAY); digitalWrite(FOCUS_PIN、LOW); #else digitalWrite(LED_BUILTIN、HIGH); #endif} void fireFlash(){#ifndef DBG_MODE digitalWrite(FLASH_PIN、HIGH); delay(FLASH_DELAY); digitalWrite(FLASH_PIN、LOW); #else digitalWrite(LED_BUILTIN、LOW); #endif} void setup(){pinMode(BUTTON_PIN、INPUT_PULLUP); pinMode(FOCUS_PIN、OUTPUT); pinMode(SHUTTER_PIN、OUTPUT); pinMode(FLASH_PIN、OUTPUT); pinMode(SENSOR_PIN、INPUT); #ifdef DBG_MODE pinMode(LED_BUILTIN、OUTPUT); #endif digitalWrite(FOCUS_PIN、LOW); digitalWrite(SHUTTER_PIN、LOW); digitalWrite(FLASH_PIN、LOW); prevButton =digitalRead(BUTTON_PIN); prevSensor =digitalRead(SENSOR_PIN); allowFlash =false;} void loop(){currButton =digitalRead(BUTTON_PIN); if(prevButton!=currButton){prevButton =currButton; if(currButton ==LOW){allowFlash =true; prevSensor =HIGH; fireDelay =map(analogRead(RESISTOR_PIN)、0、1023、FIRE_DELAY_MIN、FIRE_DELAY_MAX); openShutter(); } else {delay(50); }} currSensor =digitalRead(SENSOR_PIN); if(prevSensor!=currSensor){prevSensor =currSensor; if(currSensor ==HIGH){if(allowFlash){allowFlash =false; delay(fireDelay);ファイアフラッシュ(); }}}}
回路図

製造プロセス
- Arduinoでコインアクセプターを制御する
- IoTとAIで水生生物を救い、水質汚染と戦う
- JX Wave Generator
- LEDを制御するBluetoothを搭載したArduino!
- Arduinoクラウドでどこからでもあなたの家の温度を知る!
- ArduinoMegaをNEO-6MGPSモジュールとインターフェースする方法
- u-blox LEA-6H 02GPSモジュールとArduinoおよびPython
- ArduinoでMAX30100ウェアラブルパルスセンサーを使用する
- Nextionディスプレイを使用してFridgeyeアプリを構築する
- ArduinoでのYL-39 + YL-69土壌湿度センサーの使用
- Arduinoで日射量を測定する