SonyMulti端子付きカメラ ラジコン用シャッターユニットの製作
まずはこんな感じで回路を繋げて、、、
部品としては、
arduino Promini 5v16Mhz x1
フォトカプラ SHARP PC827 x1
抵抗200Ω×2
くらい?
で、arduinoで動かすプログラムはこんな感じです。簡単簡単♪
//各チャンネルのパルス幅上限下限 #define MaxPWM 2000 #define MinPWM 1000 #define Mid_Point 1500 //arduino ピン設定 #define Focus_Pin 4 #define Shutter_Pin 5 #define PPMin_Pin 2 //シャッター間隔 #define Interval 5000 //単位 us int Shutter_Pos = 0; //0->idle 1->shutter on ready 2->shutter release ready int Shutter_PWM = Mid_Point; static uint32_t ShutterStart = 0; static uint32_t ShutterRelease = 0; static uint32_t Now; void setup() { pinMode(Focus_Pin, OUTPUT); pinMode(Shutter_Pin, OUTPUT); pinMode(PPMin_Pin, INPUT); digitalWrite(Focus_Pin, HIGH); digitalWrite(Shutter_Pin, HIGH); } void loop() { Now = millis(); Get_PWM(); Set_Status(); if (Shutter_Pos = 1 and ShutterStart < Now) Shutter_On(); if (Shutter_Pos = 2 and ShutterRelease < Now) Shutter_Release(); } void Shutter_On(){ digitalWrite(Focus_Pin, LOW); digitalWrite(Shutter_Pin, LOW); ShutterRelease = Now + 1000;//0.5sec後にシャッターリリース ShutterStart = Now + Interval; Shutter_Pos = 2; } void Shutter_Release(){ digitalWrite(Focus_Pin, HIGH); digitalWrite(Shutter_Pin, HIGH); Shutter_Pos = 1; } void Get_PWM(){ Shutter_PWM = constrain( pulseIn(PPMin_Pin, HIGH,25000), MinPWM, MaxPWM); } void Set_Status(){ if ( Shutter_Pos != 0 and Shutter_PWM > 1300 and Shutter_PWM < 1700 ) { Shutter_Pos = 0; ShutterStart = 0; ShutterRelease = 0; digitalWrite(Focus_Pin, HIGH); digitalWrite(Shutter_Pin, HIGH); } if ( Shutter_Pos = 0 and (Shutter_PWM <= 1300 or Shutter_PWM >=1700) ) Shutter_On(); }