D600の制御に使うタブレットPCから定刻にビープ音を出し、これを拾って開始コマンドとしてD7100のシーケンス制御を行うモノです。 1.で回路図をUpしましたが、そこまで満艦飾にするのはどうか・・・という事もアリ、ブリッジではなくダイオード1個で半波整流し、大容量のコンデンサで補う事として、使い慣れたトランジスタ2SC1815をスイッチ動作させることにしました。 これまで作ってきたハードでは電池の高さを考慮する必要なくやれたのですが今度の回路は高さ制限が発生し、グリップの厚いところになる部分に部品が納まるように、電池ボックスをオフセットして付けるようにしました。 |
|
回路図 | |
部品配置図と裏面の配線図 |
E:\M_shi_Lab\MPLABXProjects\D7100Sequencer_V1.X\Sequence.c |
1 /* 2 * File: D7100_Ctrl.c 3 * Author: M_shi 4 * 5 */ 6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <xc.h> 10 #define _XTAL_FREQ 1000000; 11 12 /*****Configuration********/ 13 #pragma config FOSC=INTOSCIO, WDTE=OFF, PWRTE=ON, BOREN=ON, MCLRE=OFF, CP=OFF, IESO=OFF//, FCMEN=OFF; 14 15 int i,j,k; 16 17 int main(void){ 18 19 ANSEL=0x00; //all digital 20 CMCON0=0x07; //Comperlator off 21 WPU=0x14; //set pull up bit on 22 nGPPU=0; //pull up activate 23 TRISIO0=0; //GP0 output 24 TRISIO1=0; //GP1 output 25 TRISIO2=0; //GP2 output 26 TRISIO3=1; //GP3 input 27 TRISIO4=0; //GP4 output 28 TRISIO5=0; //GP5 output 29 30 GP0 = 1; //Speed down 31 GP1 = 1; //Shutter 32 GP2 = 1; //Speed up 33 GP4 = 1; //Focus 34 GP3 = 1; //Start Swich 35 36 while(1){ 37 if(GP3 == 0){ 38 goto Start; 39 } 40 else 41 { 42 GP0 = 1; 43 GP1 = 1; 44 GP2 = 1; 45 GP4 = 1; 46 GP3 = 1; 47 } 48 } 49 Start: 50 //Diamond ring before C2 set SS=1/2000, CL=2 shot per sec. 51 _delay(25000); //wait 25ms 52 GP4 = 0; //Focus on 53 _delay(25000); //wait 25ms 54 GP1 = 0; //Shutter release 55 _delay(12000000); //wait 12sec 56 GP1 = 1; //Shutter off 57 _delay(25000); //wait 25ms 58 GP4 = 1; //Focus off 59 _delay(25000); //wait 25ms 60 61 GP2 = 0; //Preconfig 62 _delay(25000); //wait 25ms 63 for(j=1;j<=6;j++){ //Speed up from 1/2000 to 1/8000+alpha 64 GP0 = 0; 65 _delay(25000); 66 GP0 = 1; 67 _delay(25000); 68 } 69 GP2 = 1; 70 _delay(25000); 71 72 while(1){ 73 for(i=1; i<=6; i++){ //1/8000-1/30sec 74 Shutter(); // Shutter Release 75 _delay(480000); // wait 480ms 76 GP0 = 0; //Preconfig. 77 _delay(25000); //wait 250ms 78 for(j=1; j<=4; j++){ //Speed Down 2EV 79 GP2 = 0; 80 _delay(25000); 81 GP2 = 1; 82 _delay(25000); 83 } 84 GP0 = 1; 85 _delay(25000); //Speed down quit 86 } 87 for(i=1; i<=2; i++){ //1/8sec 2shot 88 Shutter(); 89 _delay(590000); //wait 590ms 90 } 91 92 93 for(i=1; i<=6; i++){ //SS up from 1/8 to 1/8000sec 94 GP2 = 0; //Preconfig 95 _delay(25000); 96 for(j=1; j<=4; j++){ //SS speed up 97 GP0 = 0; 98 _delay(25000); 99 GP0 = 1; 100 _delay(25000); 101 } 102 GP2 = 1; 103 _delay(25000); 104 Shutter(); 105 _delay(490000); //waite 490ms 106 } 107 k++ ; 108 if (k >= 12) //After shoot 24 set 109 { 110 goto Multi ; 111 } 112 } 113 Multi: 114 GP0 = 0; //Preconfig. 115 _delay(25000); //wait 25ms 116 for(j=1; j<=4; j++){ //Speed down 2EV (1/2000) 117 GP2 = 0; 118 _delay(25000); 119 GP2 = 1; 120 _delay(25000); 121 } 122 GP0 = 1; //Capture C3 Diamond ring 123 _delay(25000); //wait 25ms 124 GP4 = 0; //Focus on 125 _delay(25000); //wait 25ms 126 GP1 = 0; //Shutter release 127 _delay(15000000); //wait 15sec 128 GP1 = 1; //Shutter off 129 _delay(25000); //wait 25ms 130 GP4 = 1; //Focus off 131 _delay(25000); //wait 25ms 132 } 133 134 int Shutter(void){ 135 GP4 = 0; //Focus on 136 _delay(25000); //wait 25ms 137 GP1 = 0; //Shutter release 138 _delay(25000); //wait 25ms 139 GP1 = 1; //Shutter off 140 _delay(25000); //wait 25ms 141 GP4 = 1; //Focus off 142 _delay(25000); //wait 25ms 143 return 0; 144 } 145 146 147