Search

2012年1月20日 星期五

Arduino - 快門線

前言:

    最近在玩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:


沒有留言:

張貼留言