準備材料
本次實驗所用到的材料如下:
- 細導線 x 2
- 電晶體:2N2222 x1
- 電阻:470歐姆 x 1 (家裡找不到,以 220 歐姆代替)
拉「快門線」
這台 BenQ DC5330 算好拆,而且還有空間可以藏線。家裡找不到多芯的細導線,只能拿網路線來玩。本來應該要用兩對線來分別控制對焦和快門,由於只是實驗而已,就先焊了兩條線在快門開關上。
我家的第一台數位相機 Canon PowerShot A70 也拆了!它只要動到三根螺絲就可以。有經驗了,這一次找了一條滑鼠的線,端子也留著用,更完美。
Arduino 的配置及程式
有關 Arduino 的配線如下圖所示:
Arduino 的程式碼如下:
int shutterPin = 8; // 控制快門的腳位
int ledPin = 13;
void setup() {
pinMode(shutterPin, OUTPUT);
pinMode(ledPin, OUTPUT);
digitalWrite(shutterPin, LOW); // 快門按鈕放開
digitalWrite(ledPin, LOW);
}
void loop()
{
digitalWrite(shutterPin, HIGH); // 快門按鈕按下
digitalWrite(ledPin, HIGH);
delay(1000); // 等待 1 秒
digitalWrite(shutterPin, LOW); // 快門按鈕放開
digitalWrite(ledPin, LOW);
delay(4000); // 等待 4 秒
}
上面的程式碼每隔五秒鐘會將指定的 shutterPin 腳位設為 HIGH,使得數位相機接在 2N2222 的兩條導線變成通路,模擬快門鈕按一下的狀態。
Raspberry Pi 的配線如下所示:
Raspberry Pi 所用的 Python 程式碼如下:
import wiringpi
from time import sleep
gpio = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_GPIO)
shutterPin = 17
gpio.pinMode(shutterPin,gpio.OUTPUT)
wiringpi.pinMode(shutterPin,1)
gpio.digitalWrite(shutterPin,gpio.LOW)
sleep(1)
for t in range(10) :
gpio.digitalWrite(shutterPin,gpio.HIGH)
sleep(1)
print (t+1)
gpio.digitalWrite(shutterPin,gpio.LOW)
sleep(4)
上面的程式碼每隔五秒鐘讓 pin 11 (GPIO 17)變成 HIGH,模擬快門鈕按一下的狀態。因為「for t in range(10) 」裡的 range 只設為 10 ,所以拍 10 張後就會停止,這部份可以依需求自己設定。
拍完的照片可以利用 PhotoCap 主選單裡的「功能」→「批次變更檔名」,將照片的檔名改為「流水號」,這樣,就可以使用 FFmpeg 來製作縮時影片。
來看看用 Arduino + Canon PowerShot A70 拍照,再以 FFmpeg 製作好的測試影片:
相關文章
沒有留言:
張貼留言