Automatyczny pilot do timelaps’ów

Automatyczny pilot do timelaps’ów

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Witam :D
Chciałbym zaprezentować szybki projekcik który pozwoli robić timelaps’y lustrzankami które nie posiadają takiego trybu (w moim przypadku PENTAX *ist DS). Oczywiście zależy od marki jakie złącze do pilota jest zaimplementowane w aparat, w dużej ilości przypadków jest to JACK 2,5mm ;)

1. Co będzie potrzebne?
– micro jack
– arduino (do prototypowania)
– podwójny 7-segmentowy wyświetlacz
– 2x tact switch
– przełącznik (jako spust)
– włącznik
– 3x tranzystor NPN (np. 2n2222)
– 20x rezystor 1K
OPCJONALNIE atmega 8, lub inny mikrokontroler na który możesz przenieść swój projekt.

2. Zaczynamy! :D

Rozpoczynamy od przygotowania jacka
Jack CANON/PENTAX
GND jacka łączymy z GND arduino :)

Jako że ma ten pilot służyć do timelaps’ów nie będę korzystał z AF ;)

jack w płytce

3. Czas na wyświetlacz i sterowanie!

Montujemy wyświetlacz w płytce wedle tego schematu.
276-078-Two-Digit-7-Segment-Display-pins

D1 Anoda/Katoda – przez tranzystor do 2 pin
D2 Anoda/Katoda – przez tranzystor do 3 pin
D1A i D2A – 4 pin
D1B i D2B – 5 pin
D1C i D2C – 6 pin

D1G i D2G – 10 pin
Przecinek (DP) możemy pominąć ;)
IMGP2667

Przyciski podpinamy w następujący sposób:
1button – 11 pin
2button – 12 pin
przełącznik – 1 pin
migawkssa

Natomiast pod pin 13 podpinamy przez tranzystor spust migawki:
migawka

Całość prezentuje się tak:
całość

4. Kod!

Kod nie jest jakimś arcydziełem i nie jest trudny do zrozumienia, korzystam z biblioteki SevSeg .
Działanie:
Przytrzymując 1 przycisk zwiększamy czas który wyświetlany jest na wyświetlaczu, przytrzymując 2 zmniejszamy. Pzełączając przełącznik uruchamiamy timer który odlicza migając wyświetlaczem czas i jeśli czas dojdzie do 0 to zwalnia migawkę (robi zdjęcie) i ustawia czas z powrotem na ten który ustawiliśmy i tak w koło Macieju ;)

#include "SevSeg.h"
unsigned int time = 0;
int odliczanie = 0;

SevSeg sevseg;

void setup() {
byte numDigits = 2;
  byte digitPins[] = {2, 3};
byte segmentPins[] = {4, 5, 6, 7, 8, 9, 10, 11};
  sevseg.begin(COMMON_ANODE, numDigits, digitPins, segmentPins);
pinMode(11,INPUT);
  pinMode(12,INPUT);
pinMode(1,INPUT);
  pinMode(13,OUTPUT);
digitalWrite(13,HIGH);
}

void loop() {
if(digitalRead(1) == LOW) ustawianie();
  if(digitalRead(1) == HIGH) fota();

  if(digitalRead(1) == LOW)show(10);
}

void ustawianie()
{
if(digitalRead(11) == HIGH) time++;
  if(digitalRead(12) == HIGH && time>0) time--;
odliczanie = time;
}

void show(int g)
{
   for(int i=0; i<g; i++)
{
      delay(5);
sevseg.setNumber(time, 1);
      sevseg.refreshDisplay(); 
}
}

void fota()
{
  if(time == 0)
{
     digitalWrite(13,LOW);
time = odliczanie;
    }
delay(498);
  digitalWrite(13,HIGH);
time--;
  show(20);
delay(398);
}

Teraz już tylko pozostaje zlutować to na oddzielnej płytce i bawić się w robienie pięknych po klatkowych filmów ;D
koniec

Dzięki za uwagę, przepraszam, że trochę chaotycznie, ale śpieszę się bo są wakacje i wyjeżdżam lada moment ;)

INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(

Ocena: 3.67/5 (głosów: 3)

Podobne posty

2 komentarzy do “Automatyczny pilot do timelaps’ów

Odpowiedz

anuluj

Masz uwagi?