Lab. of Voynich Code
2023年オーストラリア・インドネシア    金環皆既日食のたくらみ
シャッターインディケータコンセプト・回路図・ファームウェア
2022.06.26 Open 2022.08.07 Update

シャッターは切れているか?を視覚で知る

 シャッターが切れて居る事は音でわかりますが、ついでにLEDの光で感知出来たら面白いかな?という事で作ることにしました。
 シャッター信号はホットシューから得ますが、ニコンは一回切ったあと、感知用にかけていた電圧を落とさないと信号がオフにならない仕掛けです。なので単純にプルアップして電圧をかけたり、或いは単純にシャッター信号をスイッチにLEDを点灯させるだけではダメ。
 という事で、ホットシュー空のシャッター信号を得たら一旦かけていた電圧を無くす操作が必要。この操作をPICマイコンにやらせる事にしました。
 そしてついでにLEDが単純に光るのではなく、点滅させる事にしました。

回路図と部品配置図

 極シンプルです
 電源はLR44ボタン電池×2にしました。
   部品配置図もたったこれだけ
 実際の回路
   納めるケース
動作の動画です

ファームウェア

 1 /*
 2  * File:   newmain.c
 3  * Author: M shi Lab
 4  * 
 5  * For 10F222
 6  *
 7  * Created on 2022/07/31
 8  * Finished on 2022/0731
 9  */
10 
11 #include <xc.h>
12 #include <stdlib.h>
13 #include <pic10F222.h>
14  
15 // CONFIG
16 #pragma config IOSCFS = 8MHZ    // Internal Oscillator Frequency Select bit (8 MHz)
17 #pragma config MCPU = ON        // Master Clear Pull-up Enable bit (Pull-up enabled)
18 #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
19 #pragma config CP = OFF         // Code protection bit (Code protection off)
20 #pragma config MCLRE = OFF      
21  
22 #define _XTAL_FREQ 1000000
23  
24 void delay_ms(unsigned char delayc);
25 
26 //
27 void Brink(){
28     int i;
29     
30     GP1 = 0;
31     GP2 = 0;
32     
33     for(i= 1; i<=10; i++)
34     {
35         GP1 = 1;
36         GP2 = 0;
37         __delay_ms(200);
38         GP1 = 0;
39         GP2 = 1;
40         __delay_ms(200);
41     }
42     GP1 = 0;
43     GP2 = 0;
44     
45     return;
46 }
47 
48 int main(void) {
49     ADCON0bits.ANS0 = 0;//GP0/AN0 configured as digital I/O
50     ADCON0bits.ANS1 = 0;//GP1/AN1 configured as digital I/O
51     OSCCALbits.FOSC4 = 0;//GP2/T0CKI applied to GP2
52     OPTION = 0b00000000;//Timer0 Clock Source is not T0CKI
53     TRISGPIO = 0b00001000;//All for Output
54     
55     GP3 = 0;
56     GP0 = 1;
57     GP1 = 0;
58     GP2 = 0;
59  
60     int i;
61     
62     while(1){
63         if(GP3 == 0){
64             
65             __delay_ms(5);
66             GP0 = 0;
67             __delay_ms(45);
68             GP0 = 1;
69             
70             for(i= 1; i<=1; i++){
71                 GP1 = 1;
72                 GP2 = 0;
73                 __delay_ms(200);
74                 GP1 = 0;
75                 GP2 = 1;
76                 __delay_ms(200);
77             }
78             GP1 = 0;
79             GP2 = 0;
80             Brink();
81         }
82     }
83 }
84 
85 
	
inserted by FC2 system