"Make a Time-Lapse Movie Using a TI89 Calculator"
Jan 5, 2008 2:46pm |
43 comments
UPDATE: If you are having trouble getting the code to work right, make sure you have the most recent firmware installed on your ti89 (Thanks Colin).
I recently came across this post on Instructables that gave instructions on how to turn a TI83 calculator into a basic intervalometer for a Canon EOS Rebel Camera. For those of you that don't know, an intervalometer is a remote control that you can hook up to your camera that will snap photos at a specified time-interval. It is how you make time-lapse videos. I was stoked to see this because I was about to purchase the Canon TC80N3 for about $120!
While the instructable post worked great for the TI-83, it did not work for my TI-89 Titanium so I wrote a little program based on the original, but enhanced. I spent my time doing the coding through the calculators program editor, but later I found the TI Connect software that can be used to transfer files to/from the calculator, as well as do backups and screenshots, etc...
Example Time-Lapse Movie
This short movie was made in 45 minutes. Every 15 seconds a picture would snap, for a total of 180 pictures. Using a framerate of 15 frames per second (or in this case, photos per second), those 180 pictures combine to make a 12 second movie.
Necessary Components
For this to work you need a TI89 calculator (it may work on other calculators with a little code tweaking), a male-to-male mini-jack connection cable (it came with your calculator), and a camera with a mini-jack remote switch (such as the Canon Digital Rebel XTi). There is only 1 file you need to get on your calculator, in the "main" folder:
Download as TIProgram (for the TIConnect software)
or
Download as Text File (for inspection / manual input)
or
Download as Text File (for inspection / manual input)
Like I said before, you can use either a transfer utility from your computer of just code it by hand... it's not too long.
Setup
Obviously you need to make sure you have fresh batteries in the calculator and the camera. I would use it on a tripod to keep it stable, and set you camera up so that the shots are consistent. This means that you should NOT use autofocus, autoflash, or auto-anything! Keep your camera on the manual setting, adjust the aperture, iso, and focus before hand. Most time-lapse movies span hours if not days, so making sure you are setup right is crucial in saving time. Take many test shots until you are hapy, and monitor the program at first to make sure things are going as planned.
I would keep the photos named in a numerical, sequential organization. This way, when you use Quicktime or another movie making software, you will have a much easier time. Also, you will not be making a movie that is 3888x2592 pixels. Turn the quality setting to the lowest one (1936x1288 on my XTi) to save space and time.
Execution
Simply type camera() into your calculator and answer the setup questions
Screenshots
Combining into a Movie
After all the photos have been taken, you should have many files all in numerical sequence. I'm sure there are plenty of programs out there to make time-lapse movies, but I use Quicktime Pro. All you have to do is goto File => Open Image Sequence... or press Shift-Command-O

Next you want to select the first picture in your sequence, select our frame rate, and Quicktime Pro will do the rest! This will usually produce a really big file so you might want to scale it down for online viewing. Save the movie and you are done!

Code
Maybe you just want to look at the code?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
camera() Prgm ClrIO Disp "Interval in seconds?" Prompt interval Disp "Number of pictures?" Prompt quantity quantity*interval→total timeCnv(total)→list Disp "This will run for…" Disp list Disp "{days hrs min secs}" Pause "Ready to start?" Disp "Running…" For i,quantity,0,–1 startTmr()→time checkTmr(time)→t While t≤interval checkTmr(time)→t EndWhile Try Send {1} Else ClrErr EndTry Disp i EndFor Disp done EndPrgm |
- Lines 3-14: Get input and calculate time
- Line 15: Run a loop starting at "quantity" and counting down to 0
- Lines 16-20: Make the program stall for "interval" seconds
- Lines 21-25: Send the command to the camera, ignore the error about the camera not being a calculator.

Comments
I think this program actually takes one more picture than is wanted. I fixed that by changing the for loop to:
For i,quantity,1,-1
Thanks for the fix... those boundary conditions always elude me in these quick jobs.
This post is fantastic (in theory) :) i'm making a time-lapse video for a class and was looking for a way to avoid standing in the closet with a stopwatch.
I'm running into trouble with the program though, and i believe it's happening between lines 7-10. Although i coded everything identically to the example, when i run the program, it doesn't display the time as "{0 0 0 50}" but rather as "timecnv(50)", and subsequently gives me an error - "a test did not resolve to TRUE or FALSE"
I'm using a TI-89 and a Canon Rebel XT
Any thoughts?
Without seeing your code, it looks like you typed timecnv(50) instead of timeCnv(50)... note the capitalization of the "C". Thanks for the kind words
Thank you for the feedback.
The capitalization was my instinct as well, buti doublechecked and the command is written correctly in the code. my code says timeCnv, but displays timecnv.
is there any way to simplify?
Also, i'm using a regular TI-89, not the Titanium. Could that be the culprit? perhaps that's a function it doesn't support?
The code in question is only used to help you figure out how long its going to run for in days, hours, minutes and seconds. Try changing lines 8-12 to:
quantity*interval→total
Disp "This will run for…"
Disp total
Disp "Seconds"
Then you can just figure out how long it runs yourself
Thanks for the update to the code. I also have a non-Titanium TI-89, and I'm having similar issues. I had already tried just removing lines 8-12 since it wasn't crucial to me. Now I have another problem though, at line 16. It seems like the checkTmr function might now work right (or at all) on my TI-89. I can use startTmr() out on the home screen, and it returns a value like you would expect. I can even use the startTmr() and store the value to a variable correctly, just not checkTmr. (I get an argument error, without any other details)
Has anyone else had a similar problem? I figured I'd have to write the code in a different way to get around this if I can't get checkTmr to work, but the original design here seemed much cleaner than something I would write...
Bad news... after some guidebook research (here), it seems as though the ti89 does not support the same time based commmands as the ti89 titanium. Perhaps the original instructable article is better for you... you can experiment with the time it takes to get through a while loop. Or maybe pick up a used ti89 from ebay. Sorry
I had read through the manual too, so I knew it wasn't explained very well, but the functions did exist in the catalog, so I kept trying. I got your code to work, exactly as it should too, thanks for writing it and all your help. To get it to work I flashed the OS to the newest version. It didn't make any sense, because I had v2.09 before, and I flashed it to the same (2.09, the newest out for the TI-89, dated 3/27/2003) version using TI-Connect, but whatever it did fixed what was wrong with my calculator.
Be careful when upgrading because it does wipe your memory clean in the process, but I backed up my RAM and Archive beforehand, then restored it back to get this result.
Thanks Colin, you probably just figured out the solution to most peoples problems regarding this post. Kudos
I can't find the cable that came with the TI-89 so I need to get a new one. Are you using a mono or stereo cable? Got any sources??
try this one
I get an "Argument Error" when I input the "number of pictures quantity".
I simply copy and pasted the code you provided into a notefolio file, then copied that info while in the notefolio app, and pasted it into a program. Hit enter, and then opened it up via "camera()".
Any idea what I could have done wrong? I'm not a programmer by any means, so I don't know this calculator very well. Just happened to have it on hand and thought I'd give your tutorial a shot.
Thanks.
@James
I would just manually type in the program in the calculator. I am unfamiliar with notefolio and it might be adding some formatting or something to the text. You need to open the program editor and try there.
I don't undertand how the functions work while programming with the TI-89 Calc. Can someone help me? Here is the erro message I get when I execute the code, "ERROR: A test did not resolve to TRUE or FALSE" It seems to me as my arguments aren't getting passed to the function. Please someone help...
I have the newer version of the TI-89, aka Titanium.
@Didum, on your TI-89, go to HOME -> ProgramEditor -> Open camera(), and send me an email with everything inside (exactly as you typed) by clicking on my pic (top right side of this comment)
Coneybeare, I have emailed you the code. In the email, I had the main program written first and followed by the function, namely, fctn(mach,beta). Both of these programs are written separately. When I execute the program, the same error keeps coming up: A test did not resolved to TRUE or FALSE. Thanks for your time.
@Didum, The code you sent me was for another program... If you are having trouble with the camera() prgram, please email the code for camera(). Otherwise, I suggest getting generic TI89 programming help here
The code I sent you is the one I'm having problems with. I have gotten it to work, but not in the same fashion I had it programmed in MATLAB and that is where I'm trying to get to. When you look the code I sent you, is there anyway you can tell me why I'm getting "A test did not resolved to TRUE or FALSE" even though this program is not same as camera()? Will it be the expression I had in the while loop or what could be a possible explanation?
Thanks for your time.
Hi, First off, Great Code. Second, I keep getting a "syntax error" on line 14 at "-1". Any help will be appreciated. Thanks.
For other applications with the calculator-camera combination I've built a site. It's Dutch and for many other TI calculators. I link to your site (and will use some info of it, translated to Dutch) for the TI-89 PRGM. Thanks!
Doesn't seem to do anything with my SONY R1, does anyone tried it on other than Canon?
I didnt try the whole code
just
Try
Send {1}
Else
ClrErr
EndTry
can anyone help please
If its not working checkTmr() function try to change from approximate to auto mode - then its workingè Thanks for the code! (Tryed on a Voyage 200)
Hi, thanks for this code! I'm very excited to start using it. However, whenever I try to run the program, I get a syntax error. It brings me to Line 15 and puts the cursor between the - and 1. Do you have any suggstions?
Thanks again!
Is it possible that the - you entered in is a dash and not a negative sign?
I feel like an idiot now. I put in a minus sign instead of a dash. Sorry for the confusion and thanks for the response.
I tried this using a TI-92. My camera is currently borked - nothing operates the shutter now, not the button, wireless remote, or the calculator. So don't try it with a TI-92! If anyone has any ideas of how to fix my camera, please let me know.