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
GND jacka łączymy z GND arduino :)
Jako że ma ten pilot służyć do timelaps’ów nie będę korzystał z AF ;)
3. Czas na wyświetlacz i sterowanie!
Montujemy wyświetlacz w płytce wedle tego schematu.
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ąć ;)
Przyciski podpinamy w następujący sposób:
1button – 11 pin
2button – 12 pin
przełącznik – 1 pin
Natomiast pod pin 13 podpinamy przez tranzystor spust migawki:
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
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 :(
Daj jakiś filmik prezentacje może timelapsa ;)
Timelapsa jeszcze nie zrobiłem, to trzeba kamere na chociaż jeden dzień wystawić ;)