最近在玩DSLR+M42老鏡頭,然後突然想到可以作一條快門線(我主要用B快門拍夜景),首先先去找一個有左右聲道的2.5mm接頭,然後分別焊上三條線(如下圖),2.5mm接頭有三段最前面是左聲道、中段是右聲道、最後一段是接地,我買的接頭焊上紅色線的是左聲道、藍色是右聲道、黑色是接地,當最前段(左聲道)與接地導通時DSLR就會按下快門,當中段(右聲道)與接地導通時DSLR會自動對焦(如果鏡頭可以)。
然後Arduino接法也很簡單(如下圖),IC是型號TLP521的光耦合器,也可以用其他光耦合器嘗試看看,電阻用220ohm即可,而那個三支腳的電晶體是紅外線接收器(可以參考Cooper Maa大大的紅外線教學),這個部份可以看要用什麼東西控制可自行更改,然後當Arduino的digital pin 2設為HIGH時IC的3、4腳(2.5mm左聲道與接地的接腳)會導通,然後就會按下快門了,因為我的M42沒有自動合焦,所以沒有把中段(右聲道接上)接上,如果要兩個功能(拍照與合焦)就要用兩組光耦合與兩個Arduino digital pin去控制。
實驗:
程式:
#include <IRremote.h>
const int irReceiverPin = 3;
const long code = 0x9FA1F894;
const int cameraRemotePin = 2;
boolean sw = true;
IRrecv ir(irReceiverPin);
decode_results results;
void setup()
{
pinMode(cameraRemotePin,OUTPUT);
digitalWrite(cameraRemotePin,LOW);
ir.enableIRIn();
}
void loop()
{
if(ir.decode(&results)){
Serial.println(results.value,HEX);
if((results.value == code) && sw){
sw = false;
digitalWrite(cameraRemotePin,HIGH);
}
else if((results.value == code) && !sw){
sw = true;
digitalWrite(cameraRemotePin,LOW);
}
ir.resume();
delay(200);
}
}
DEMO:
沒有留言:
張貼留言