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

Automatyczny pilot do timelaps'ów

Nie przegap nowych projektów!

Zapisując się na nasz Newsletter będziesz miał pewność, że nie przegapisz żadnego nowego projektu opublikowanego w Majsterkowie!

Od teraz nie przegapisz żadnego projektu!

Masz uwagi?