Wyzwalacz IR dla aparatu Nikon D90 D3400

Miejsce na posty nie związane z powyższymi
ODPOWIEDZ
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Wyzwalacz IR dla aparatu Nikon D90 D3400

Post autor: Henryk » 02 maja 2020, 21:22

Witam :D
Od kilku dni intensywnie śledzę parkę zimorodków :D w moich rejonach to bardzo rzadki gatunek , niestety urodził się kłopot z ich prędkością latania .
Piękny ptak , ale nie ma zbytnio ochoty do pozowania do zdjęć . Dwa tygodnie obserwacji zaowocowały zaledwie kilkoma fotkami .
DSC_0009.JPG
DSC_0010.JPG
Wpadłem na pomysł budowy wyzwalacza migawki/fotopułapki . Mam kłopot z przeniesieniem kodu z C ( którego kompletnie nie rozumie ) do Bascom .
Link do projektu :arrow: KLIK z którego interesuje mnie tylko fragment transmisji do aparatu .
  1. // Funkcja generująca sygnał wyzwalający aparaty Nikon
  2. void zrobZdjecie(){
  3.   digitalWrite(7, HIGH);                             // sygnalizacja LED wykonywania zdjęcia
  4.   for (int i=0; i < 2; i++) {                        // sygnał wzrocowy ma być powtórzony 2x
  5.      stan_1(76);                                     // 76 cykli "1"
  6.      stan_0(1064);                                   // 1064 cykli "0"
  7.      stan_1(15);                                     // 15 cykli "1"
  8.      stan_0(60);                                     // 60 cykli "0"
  9.      stan_1(15);                                     // 15 cykli "1"
  10.      stan_0(136);                                    // 136 cykli "0"
  11.      stan_1(15);                                     // 15 cykli "1"
  12.      stan_0(2423*2);                                 // 2423 cykli "0"
  13.   }
  14.    delay(100);                                       // trzeba było przedłużyć, gdyż czas wysyłania informacji do aparatu był za krótki
  15.    digitalWrite(7, LOW);
  16. }
  17. // ============================================================================================
Jeśli ktoś może to przełożyć na Baskom , to uraduje moją biedną dusze :)
Docelowo wyzwalacz będzie współpracował z czujnikiem koloru i małą lunetą celowniczą , a co z tego mi wyjdzie czas pokaże :?:
Z góry dziękuję za okazaną pomoc :D
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wyzwalacz IR dla aparatu Nikon D90 D3400

Post autor: niveasoft » 03 maja 2020, 9:28

To jest proste jak świński ogon ;) To co zamieściłeś to akurat nie jest najważniejsze.
Ogólnie wszystkie IR działają na pewnej częstotliwości i najczęściej to 38kHz a to jest około 27us.
W tym Arduinowym programie nawet nie użyli Timera tylko machają pinem za pomoca funkcji.
Wiadomo że żeby wygenerować jakąś czestotliwość to sygnał musi być odwracany. Dlatego na przykład najwyższa częstotliwość jaką potrafi wygenerować uC to jest połowa jego sygnału zegarowego :D

Tak więc w tym programie jedna funkcja generuje częstotliwość czyli te 26us dzieli na pół. Najpierw na 13us ustawia stan wysoki a potem ustawia stan niski na kolejne 13us.
Druga funkcja po prostu niczego nie nadaje a jedynie czeka tyle czasu ile wynosi okres 36kHz czyli te 27us. Potem te funkcje mają po prostu powtórzenia i jeśli pisze : stan_1(76) to musisz tylko napisać "For N = 0 to Liczba_powtorzen".
Na samym końcu funkcja "Zrob_zdjecie" po prostu dwukrotnie wysyła tę sekwencje.
Awatar użytkownika
Henryk
Posty: 348
Rejestracja: 22 sty 2018, 17:20

Re: Wyzwalacz IR dla aparatu Nikon D90 D3400

Post autor: Henryk » 03 maja 2020, 10:43

niveasoft pisze:
03 maja 2020, 9:28
To jest proste jak świński ogon ;)
Witam :D , proste nie dla wszystkich .

Wczoraj jeszcze długo szperałem w sieci i znalazłem przykład z timerem :arrow: KLIK :) jutro sprawdzę czy to coś zadziała , a później będę musiał przerobić program do pracy z czujnikiem .
Awatar użytkownika
niveasoft
Posty: 1216
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Wyzwalacz IR dla aparatu Nikon D90 D3400

Post autor: niveasoft » 03 maja 2020, 10:59

No tak powinno mniej więcej wygladać to tłumaczenie, ale widze że ten drugi kod masz juz w Bascom :D
  1. Dim N As Byte
  2.  
  3. Sygnal Alias Portd.2 : Config Sygnal = Output
  4.  
  5. Const Okres_sygn_38khz = 26                                 'w milisekundach
  6. Const Polowa_okresu = Okres_sygn_38khz / 2
  7.  
  8.  
  9. Sub Sygnal_38khz()
  10.  Set Sygnal
  11.   Waitus Polowa_okresu
  12.  Reset Sygnal
  13.   Waitus Polowa_okresu
  14. End Sub
  15.  
  16. Sub Stan_1(byval Times As Word)
  17.  Local Helpw As Word
  18.  
  19.  For Helpw = 0 To Times
  20.   Call Sygnal_38khz()
  21.  Next
  22.  
  23. End Sub
  24.  
  25. Sub Stan_0(byval Times As Word)
  26.   Local Helpw As Word
  27.   Helpw = Times * Okres_sygn_38khz
  28.   Waitus Helpw
  29. End Sub
  30.  
  31.  
  32. Sub Zrob_zdjecie
  33.   For N = 1 To 2
  34.     Call Stan_1(76)                                         '  76 Cykli "1"
  35.     Call Stan_0(1064)                                       '  1064 cykli "0"
  36.     Call Stan_1(15)                                         '  15 cykli "1"
  37.     Call Stan_0(60)                                         '  60 cykli "0"
  38.     Call Stan_1(15)                                         '  15 cykli "1"
  39.     Call Stan_0(136)                                        '  136 cykli "0"
  40.     Call Stan_1(15)                                         '  15 cykli "1"
  41.     Call Stan_0(4846)                                       '  2423 Cykli "0"
  42.   Next
  43. End Sub
ODPOWIEDZ