Time lapse Shooter maken

Hoi,

Ik wil voor mijn digitale camera een Time Lapse schooter maken. maar weet even niet hoe te beginnen. T lieft met een Pic 16f628a en een in te stellen tijd voor de tijd voor focus en tijd voor de tijd tussen de foto's in.
Wie kan mij helpen?

Edit: Zelf maar even een proggje geschreven maar werkt dit?

pic basic code:


DEVICE 16F628A                ;Gebruik een 16F628A type
CONFIG INTRC_OSC_NOCLKOUT, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF
ALL_DIGITAL TRUE              ;Alle ingangen digitaal

;Logische constanten
SYMBOL LAAG         = 0       
SYMBOL OFF          = 0
SYMBOL ON           = 1

;Algemene constanten
SYMBOL Schaal       = 124     ;schaal waarde in vullen

 ;Poortnamen
SYMBOL Potmeter     = PORTA.1 ;Potmeter aangesloten via een condensator aan GND
SYMBOL Focusen      = PORTA.2 ;Focusen
SYMBOL Foto         = PORTA.3 ;Foto
SYMBOL S1           = PORTB.0 ;Toets om grenswaarden van instelling potmeter vast te leggen

;Variabelen declareren
DIM Focus      AS BYTE   ;Bevat de Focus tijd
DIM Wacht      AS BYTE   ;Bevat de wacht tijd

;        76543210
PORTA = %00000000             ;Alle PORTA uitgangen uit (laag maken)
TRISA = %11110011             ;PORTA.3 en PORTA.2 omschakelen als uitgang voor de LED's

PORTB_PULLUPS ON              ;On-chip pull-up weerstanden actief (voor S1)
CLEAR                         ;Wis alle RAM geheugen
DELAYMS 500                   ;LCD stabilisering


;Hoofdprogramma
CLS                                     ;Alles van het LCD scherm wissen
               ;1234567890123456
PRINT AT 1, 1, "   Stel Focus   "       ;Plaats tekst op het LCD
PRINT AT 2, 1, "    S1 = Save   "

REPEAT
  Focus = POT Potmeter, Schaal     ;Geef nieuw gemeten waarde aan 'Focus'
                 ;1234567890123456
  PRINT AT 3, 1, "Focus =    sec  "
  PRINT AT 3, 9, DEC Focus, "  "  ;Geef potmeterinstelling rechtsonder op LCD weer

UNTIL S1 = LAAG                         ;Focus is in te stellen totdat op S1 is gedrukt

DELAYMS 25   ;even wachten voor de zekerheid

WHILE S1 = LAAG : WEND                  ;Wacht tot toets is losgelaten (Zolang S1 laag is...) 
                 ;90123456
  PRINT AT 1, 9, "Wacht   "                  ;Wijzig tekst op LCD

REPEAT
  Wacht = POT Potmeter, Schaal     ;Geef nieuw gemeten waarde aan 'Wacht'
                 ;1234567890123456 
  PRINT AT 4, 1, "Wacht =    sec  " 
  PRINT AT 4, 9, DEC Wacht, "  "  ;Geef potmeterinstelling rechtsonder op LCD weer

UNTIL S1 = LAAG                ;Wacht is in te stellen totdat op S1 is gedrukt

DELAYMS 25 ;even wachten voor de zekerheid 

WHILE 1 = 1                             ;Programma continu uitvoeren
  HIGH Focusen
  DELAYMS Focus * 1000
  HIGH Foto
  DELAYMS 10 ; even wachten met loslaten
  LOW Focusen
  LOW Foto
  DELAYMS Wacht * 1000
WEND

END

Edit2: nieuwe code

www.tinuselectronics.nl Because DIY Electronics Matters!!!!

Ja zoiets heb ik ook gemaakt voor m'n nikon maar dan met een AVR.
Mogelijk zijn de signalen laag-actief, dus dan moet je hoog een laag omdraaien.
Wat voor camera heb je?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Oké, bedankt. ik heb een Canon PowerShot A560.

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
klein is fijn

Moderator

Twee optocouplers zijn aan te raden. Ik kreeg nogal wat vage effecten toen ik de focus en trigger rechtstreeks aanstuurde bij mijn A510. Beide zijn active low, en de tor van een opto is genoeg om ze omlaag te trekken.

Sine

Moderator

Met een A560 kan het nog veel simpeler :
http://chdk.wikia.com/wiki/CHDK

Aanrader ! Je kunt op die manier zelfs de timer in de camera programmeren, geen externe hardware nodig.

OF je stelt de camera zo in dat je hem via de usb poort kunt triggeren ( standaard functie in chdk, spanning op de usb poort = trigger )

Mijn A520 kan het helaas niet, maar m'n G7 trigger ik via USB.
http://smdshop.nl/Rosmalen20100313/PICT0019.JPG ( met dank aan Paul voor de foto )

Als je puur timelapse gaat schieten kan het dus 100% in software, behalve als je met motion control wilt gaan werken, dan wil je de cam extern kunnen triggeren.

@ Kif bedankt voor de Tip werkt nu perfect!!

@ Sine ook bedankt voor de info maar wil hem stak ook op een afstandje kunnen bedienen met een 433Mhz zendertje dus vandaar :)

Foto's en filmpje volgen nog :)

Edit Timelapsedemo

Edit2: Op het breadboard

[Bericht gewijzigd door Tinus016 op maandag 15 maart 2010 20:37:33 (12%)

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
Sine

Moderator

Ah, je hebt je cam ook al uit elkaar getrokken, dat had bij dit nieuwere type niet gehoeven.

Ik zie dat je blijkbaar de camera laat autofocussen (gezien de melding op het LCD). Naar mijn mening is dat bij timelapse soms onhandig. Best een handmatige focus gebruiken, dan heb je ook geen last van te weinig licht en andere (auto)focus verstorende elementen. Just my 2 cents.

Henry S.

Moderator

En dan heb je meteen ruimte op je display voor een countdown.

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.

@Sine, O, je bedoelt dat ik hem ook via de USB had kunnen triggeren. na ja volgende keer beter :)
@mbbneon en Henry, Um zal het eens proberen.

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
Sine

Moderator

Op 16 maart 2010 17:19:57 schreef tinus016:
@Sine, O, je bedoelt dat ik hem ook via de USB had kunnen triggeren. na ja volgende keer beter :)

Jep, en dan nog zou ik eens naar chdk kijken, er zitten veel extra fucties in die je cammetje standaard niet kan.

Pre focussen ( de sluiter half indrukken ) heeft overigens wel degelijk zin, niet voor de focus die je inderdaad het beste handmatig instelt, maar om de sluitertijd te bepalen.

Je kunt je cam bijvoorbeeld in Av mode zetten en de camera aan de hand van het omgevingslichgt de sluitertijd laten bepalen.

Dingen als zonsop- /ondergangen zoals deze kun je bijna niet anders schieten :

http://www.youtube.com/watch?v=Ci9RCSWnkA0

Ik heb nog even naar dat chdk gekeken maar ik krijg het maar niet aan de praat dus maar even op gegeven En verder wil de countdown in pic basic ook niet egt lukken. Dus wie weet raad?

Dit is wat ik nu heb:

pic basic code:


Aftellen:

                 ;12345678901234567890
  PRINT AT 3, 1, "Wacht is nog:    sec"

REPEAT
  PRINT AT 3, 14, Wacht, "   "
  DEC Wacht
  DELAYMS 1000
UNTIL Wacht = 0

RETURN

T werkt wel maar na een lus is de Wacht nul en das nou net niet de bedoeling.

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
Rob W.

Honourable Member

Je geeft 'wacht' ook geen start waarde mee..

Leest mee sinds 19 augustus 2001..

je bedoel:

code:


t=wacht
repeat 
  print ... 
  dec t
  delayms 1000
until t <= 0

(merk op: ik schrijf <= 0... mogelijk probeer je later 4.5sec te wachten, en dan wordt ie nooit precies gelijk aan nul! )

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Aha bedankt! alleen ondervind ik een probleem bij het opgeven van t = Wacht

hij heeft het over variable 'wacht' not found terwijl de wel in de variable lijst staat

Edit: anders om doen maakt ook niet uit dan is enkel de melding anders maar komt op het zelfde neer.

[Bericht gewijzigd door Tinus016 op zaterdag 20 maart 2010 19:35:38 (24%)

www.tinuselectronics.nl Because DIY Electronics Matters!!!!
Rob W.

Honourable Member

Andersom zetten. wacht = t

Leest mee sinds 19 augustus 2001..

Rob,

Bij het initializeren, geeft hij "wacht" een waarde. Met

code:


 DELAYMS  wacht * 1000

werkt dat. Als je dan een lusje maakt waarin "wacht" aftelt, gaat hij de volgende keer fout...

Dus moet je aftellen met een variabele t of zo. Dus

code:

 t = wacht

Ik hoop dat ik dat goed schrijf, want ik spreek al bijna 25 jaar geen basic meer....

Misschien moest je t nog declareren?

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Rob W.

Honourable Member

Ach ja, je hebt gelijk. Ik had even niet in de gaten dat je t gebruikte om vanaf te trekken.

Leest mee sinds 19 augustus 2001..

Nou ik krijg het toch niet voor elkaar dus wil iemand (even) kijken wat ik verkeerd doe?
hier een link naar het volledige programma.
*KLIK*

www.tinuselectronics.nl Because DIY Electronics Matters!!!!

Ohh je stelt dat symbol t = wacht, en verderop declareer je alles. Je wilt dat ze beide altijd het zelfde zijn?

Dan zet je dat gewoon in je main, en dan zet je gewoon T = Wacht
(Nu probeer je namelijk iets in te stellen, maar er is niet duidelijk wat het moet zijn voor de uC)

Maar kun je wacht niet gewoon overal vervangen voor T? Dit omdat het toch altijd hetzelfde moet zijn volgens je alias ;)

[Bericht gewijzigd door Fredjuhh op zondag 21 maart 2010 11:25:56 (39%)

"Ben nog een N00B, maar dat is al aan het veranderen ;)

Nee kan 'Wacht' niet vervangen voor 'T' want dan is de Wacht(T) na een rondje nul en wacht hij dus niet meer en zal dus constant foto's maken. Of zie ik dat verkeerd?

www.tinuselectronics.nl Because DIY Electronics Matters!!!!

Ja, maar jij zet boven in dat wacht = T dus wat jij dan nu zegt, is dat wacht altijd hetzelfde als T is, dus kun je wacht net zo goed als T schrijven.
MAAR als je ergens in je programma T gelijk aan wacht wilt maken, dan zet je daar wacht = T

Dus met andere woorden: haal die symbol t = wacht gewoon weg ;)

M.a.w. verwijder deze:

code:

 SYMBOL T            = Wacht  <<<<<<<<<<<<<<<<<<<  dit pikt hij om een of andere reden niet.

[Bericht gewijzigd door Fredjuhh op zondag 21 maart 2010 13:52:51 (17%)

"Ben nog een N00B, maar dat is al aan het veranderen ;)
Henry S.

Moderator

Klopt, 'wacht' is op dat moment niet gedefineerd.

Gebruik Symbol wacht = 10 (of andere waarde)

En zet meteen onder Aftellen: het volgende

T = wacht

Daarmee wordt T weer gereset voor het begin van het aftellen.

Verder zit er nog een bug in, GOSUB hoofdprogramma onderaan de hoofdlus. Dat gaat de stack niet leuk vinden, Na een paar keer loopt het programma vast.

Gebruik GOTO hoofdprogramma, maar dat is ook niet netjes.
Nog beter is je hele hoofdprogramma in een While 1=1 en Wend te zetten.

Deze vergelijking is altijd waar en het programma blijf continue lopen.

73's de PA2HS - ik ben een radiohead, De 2019 CO labvoeding.

bedankt voor de hulp,

(ja daar is die maar weer.)

maar zodra ik op geef dat wacht 10 0f een andere waarde moet hebben, kan ik wacht niet meer instellen. althans proton begint dan te protesteren. iets met *klik*

Progje nu

www.tinuselectronics.nl Because DIY Electronics Matters!!!!

En als je nu eens "wacht = 10 net boven je main lus zet, en SYMBOL wacht = 10

laat vervallen??

Want je bent weer tegenstrijdige dingen aan het doen: je zegt dus eerst wacht moet altijd 10 zijn, maar later wil je wacht dus wel weer wijzigen.... DAT GAAT NIET he ;)

EDIT: nu gebruik je een DIM en een SYMBOL voor een en dezelfde naam, dat vindt je compiler niet leuk.

Ik ben niet van plan om je hele proggie door te gaan spitten, maar als je ergens in je programma wacht = 10 neerzet (op de juiste plek), dan gaat het vast en zeker lukken ;)

"Ben nog een N00B, maar dat is al aan het veranderen ;)