<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PhotosbyKev &#187; PhotosbyKev</title>
	<atom:link href="http://www.photosbykev.com/wordpress/category/photosbykev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.photosbykev.com/wordpress</link>
	<description>Wildlife and Nature Photography by Kevin</description>
	<lastBuildDate>Fri, 30 Jul 2010 10:53:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Gloucester Sunset</title>
		<link>http://www.photosbykev.com/wordpress/2010/07/30/gloucester-sunset/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/07/30/gloucester-sunset/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 10:48:43 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1514</guid>
		<description><![CDATA[A couple of photographs from a timelapse sequence with a Canon 7D and 17-40mm lens.  A 2 stop hard ND filter and 2 stop soft ND filter was used to get the exposure balance correct. Taken from Birdlip hill looking west over Gloucester. The timelapse will be posted later on.]]></description>
			<content:encoded><![CDATA[<p>A couple of photographs from a timelapse sequence with a Canon 7D and 17-40mm lens.  A 2 stop hard ND filter and 2 stop soft ND filter was used to get the exposure balance correct. Taken from Birdlip hill looking west over Gloucester.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/scapes/img_0340_dxo.jpg" title="Birdlip hill looking west over Gloucester - img_0340_dxo" class="shutterset_singlepic2742" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2742&amp;width=600&amp;height=300&amp;mode=" alt="Birdlip hill looking west over Gloucester" title="Birdlip hill looking west over Gloucester" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/scapes/img_0848_dxo.jpg" title="Gloucester Sunset - img_0848_dxo" class="shutterset_singlepic2743" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2743&amp;width=600&amp;height=300&amp;mode=" alt="Gloucester sunset" title="Gloucester sunset" />
</a>
</p>
<p>The timelapse will be posted later on.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Gloucester+Sunset+http://hmwz7.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/07/30/gloucester-sunset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Canon 7D and 40D Audio Timing</title>
		<link>http://www.photosbykev.com/wordpress/2010/07/24/canon-7d-and-40d-audio-timing/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/07/24/canon-7d-and-40d-audio-timing/#comments</comments>
		<pubDate>Sat, 24 Jul 2010 20:19:35 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1504</guid>
		<description><![CDATA[An audio recording of the Canon 7D and Canon 40D cameras using a Zoom H4n solid state recorder to see what the timings were for the mirror and shutter. The top 3 audio traces are for the Canon 7D and show: a full cycle through mirror up/shutter open/shutter close/mirror down (manual exposure of 1/5 second [...]]]></description>
			<content:encoded><![CDATA[<p>An audio recording of the Canon 7D and Canon 40D cameras using a Zoom H4n solid state recorder to see what the timings were for the mirror and shutter.</p>
<p>The top 3 audio traces are for the Canon 7D and show:</p>
<ul>
<li>a full cycle through mirror up/shutter open/shutter close/mirror down (manual exposure of 1/5 second (200ms))</li>
<li>mirror up</li>
<li>shutter down/mirror down</li>
</ul>
<p>the lower three traces are for the Canon 40D camera.</p>
<p>If you right click on the image you can open the full size file in another window so you can see the timing down to a millisecond.</p>
<p>The audio recordings were taken using a Zoom H4n digitial recording system.</p>
<p>There is an excellent &#8216;timelapse&#8217; of a Nikon D3 mirror/shutter operating <a title="Nikon D3 mirror/shutter movie" href="http://regex.info/blog/2008-09-04/925" target="_blank">here</a></p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/canon7d-and-40d-timing/combined_tracks.jpg" title="Audio tracks of the Canon 7D and 40D cameras" class="shutterset_singlepic2741" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2741&amp;width=600&amp;height=400&amp;mode=" alt="combined_tracks" title="combined_tracks" />
</a>
</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Canon+7D+and+40D+Audio+Timing+http://arozi.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/07/24/canon-7d-and-40d-audio-timing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graduation Day</title>
		<link>http://www.photosbykev.com/wordpress/2010/07/15/graduation-day/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/07/15/graduation-day/#comments</comments>
		<pubDate>Thu, 15 Jul 2010 21:09:55 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1502</guid>
		<description><![CDATA[Bristol University Graduation Day 14th of July 2010 Graduation Day 14th July 2010 from Kevin Lewis on Vimeo.]]></description>
			<content:encoded><![CDATA[<p>Bristol University Graduation Day 14th of July 2010</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="450" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13371631&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="450" src="http://vimeo.com/moogaloop.swf?clip_id=13371631&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/13371631">Graduation Day 14th July 2010</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Graduation+Day+http://b4hds.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/07/15/graduation-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Birth of a Little Bramper</title>
		<link>http://www.photosbykev.com/wordpress/2010/07/11/the-birth-of-a-little-bramper/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/07/11/the-birth-of-a-little-bramper/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 21:57:11 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1493</guid>
		<description><![CDATA[The Little Bramper developed by Thomas Bethel has been designed to assist timelapse photographers in achieving flicker free time lapse video during transitions from day to night or night to day. To achieve this the system precisely controls the timing of the bulb exposure when the camera is in bulb mode and can automatically ramp [...]]]></description>
			<content:encoded><![CDATA[<p>The Little Bramper developed by Thomas Bethel has been designed to assist timelapse photographers in achieving flicker free time lapse video during transitions from day to night or night to day.</p>
<p>To achieve this the system precisely controls the timing of the bulb exposure when the camera is in bulb mode and can automatically ramp the exposure duration, up or down, to correct for the change in light at dusk and dawn.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13250424&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="400" src="http://vimeo.com/moogaloop.swf?clip_id=13250424&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/13250424">The Birth of a Little Bramper</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>More information on the Little Bramper can be found <a href="http://www.timescapes.org/phpBB3/viewtopic.php?f=28&amp;t=1893">here</a></p>
<p><a title="Assembly instructions" href="http://www.photosbykev.com/misc/assembly.pdf" target="_blank">Assembly Instructions</a> and <a title="Cheat sheet" href="http://www.photosbykev.com/misc/cheatsheet_v1.pdf" target="_blank">Cheatsheet</a></p>
<p>First timelapse attempt with the Little Bramper system using a Canon 7D and 10-22mm lens with the exposure being ramped from 50ms upto 3500ms including a iso step change from 100 to 200iso. Not perfect but the errors are down to me rather than the Little Bramper.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="450" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=13667772&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="450" src="http://vimeo.com/moogaloop.swf?clip_id=13667772&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/13667772">Cemaes Sunset Timelapse with Little Bramper</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=The+Birth+of+a+Little+Bramper+http://zopnm.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/07/11/the-birth-of-a-little-bramper/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Lockside Cafe &#8211; Grindley Brook</title>
		<link>http://www.photosbykev.com/wordpress/2010/06/28/the-lockside-cafe-grindley-brook/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/06/28/the-lockside-cafe-grindley-brook/#comments</comments>
		<pubDate>Mon, 28 Jun 2010 20:57:47 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1483</guid>
		<description><![CDATA[A sequence of timelapse sequences taken with a Canon 7D. The Lockside Cafe at Grindley Brook is a very pleasant place to stop off for lunch or just a cup of coffee. Just off the A41 near Whitchurch the flight of locks provides a very scenic place for photography and with the cafe right on [...]]]></description>
			<content:encoded><![CDATA[<p>A sequence of timelapse sequences taken with a Canon 7D.</p>
<p>The Lockside Cafe at Grindley Brook is a very pleasant place to stop off for lunch or just a cup of coffee. Just off the A41 near Whitchurch the flight of locks provides a very scenic place for photography and with the cafe right on the side of the flight it doesn&#8217;t get much better.</p>
<p>A regular procession of narrow boats travels up and down the flight of locks and the dog, called Bee, from the cafe will soon have you trained to throw his ball for him to fetch.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12924835&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="400" src="http://vimeo.com/moogaloop.swf?clip_id=12924835&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/12924835">The Lockside Cafe &#8211; Grindley Brook</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>The backing track &#8220;Llangollen Dreams&#8221; was written and produced by <a title="Waterway Songs" href="http://www.waterwaysongs.co.uk/index.html" target="_blank">Ian H Bruce</a> who kindly gave permission for it to be used on this video</p>
<p style="text-align: center;">
<small><a style="color: #0000ff; text-align: left;" href="http://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=grindley+brook&amp;sll=52.981743,-2.710447&amp;sspn=0.002067,0.010986&amp;ie=UTF8&amp;hq=&amp;hnear=Grindley+Brook,+Shropshire,+United+Kingdom&amp;ll=52.982,-2.711&amp;spn=0.002067,0.006899&amp;t=h&amp;z=14">View Larger Map</a></small></p>
<p><a title="Grindley BrookVirtual Village" href="http://www.surftech.co.uk/GrindleyBrookVillage/index.htm" target="_blank">For more information on the village and the history of the locks click here</a></p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=The+Lockside+Cafe+%E2%80%93+Grindley+Brook+http://a6kyn.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/06/28/the-lockside-cafe-grindley-brook/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cemaes Bay Sunset &#8211; Timelapse</title>
		<link>http://www.photosbykev.com/wordpress/2010/06/05/cemaes-bay-sunset-timelapse/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/06/05/cemaes-bay-sunset-timelapse/#comments</comments>
		<pubDate>Fri, 04 Jun 2010 23:52:16 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1462</guid>
		<description><![CDATA[Cemaes Bay Sunset Timelapse from Kevin Lewis on Vimeo. A quick time lapse of the sunset over Cemaes Bay on Anglesey in North Wales. Canon 7D and twisted 10-22mm lens controlled by an arduino intervalometer.]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=12307018&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="400" src="http://vimeo.com/moogaloop.swf?clip_id=12307018&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/12307018">Cemaes Bay Sunset Timelapse</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>A quick time lapse of the sunset over Cemaes Bay on Anglesey in North Wales.</p>
<p>Canon 7D and twisted 10-22mm lens controlled by an arduino intervalometer.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/anglesey/cemaes_040610.jpg" title="Cemaes bay sunset" class="shutterset_singlepic2733" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2733&amp;width=600&amp;height=300&amp;mode=" alt="cemaes_040610" title="cemaes_040610" />
</a>
</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Cemaes+Bay+Sunset+%E2%80%93+Timelapse+http://n66wp.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/06/05/cemaes-bay-sunset-timelapse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Penmon Point Lighthouse</title>
		<link>http://www.photosbykev.com/wordpress/2010/05/31/penmon-point-lighthouse/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/05/31/penmon-point-lighthouse/#comments</comments>
		<pubDate>Mon, 31 May 2010 08:26:23 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1452</guid>
		<description><![CDATA[Penmon Point lighthouse (also known as Trwyn Du in the Welsh language) was built in the late 1830&#8242;s after the Rothesay Castle, which departed Liverpool in 1831 met its end here, taking the lives of 117 passengers and crew with it. It can be a very mournful place to visit with the sound of the [...]]]></description>
			<content:encoded><![CDATA[<p>Penmon Point lighthouse  (also known as Trwyn Du in the Welsh language) was built in the late 1830&#8242;s after the Rothesay Castle, which departed Liverpool in 1831 met its end here, taking the lives of 117 passengers and crew with it. It can be a very mournful place to visit with the sound of the 178Kg bell ringing out every 30 seconds, warning other ships of the fate of the Rothesay Castle.</p>
<p>The location of the Penmon Point Lighthouse is on the North East tip of Anglesey near the beautiful town of Beau Maris and it&#8217;s very attractive castle and location on the Menai Strait.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/penmon/img_5158_59_60_61_62_print.jpg" title="Penmon Point Lighthouse" class="shutterset_singlepic2729" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2729&amp;width=600&amp;height=400&amp;mode=" alt="img_5158" title="img_5158" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/penmon/img_5167_3_4_5_6_print.jpg" title="Penmon Point Lighthouse" class="shutterset_singlepic2730" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2730&amp;width=600&amp;height=400&amp;mode=" alt="img_5167" title="img_5167" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/penmon/img_5199_201_203_print.jpg" title="Penmon Point Lighthouse" class="shutterset_singlepic2731" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2731&amp;width=600&amp;height=400&amp;mode=" alt="img_5199" title="img_5199" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/penmon/img_5259_60_61_62_63_64_65_print.jpg" title="Penmon Point Lighthouse" class="shutterset_singlepic2732" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2732&amp;width=600&amp;height=400&amp;mode=" alt="img_5259" title="img_5259" />
</a>
</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Penmon+Point+Lighthouse+http://dicz3.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/05/31/penmon-point-lighthouse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Camera Intervalometer Source Code</title>
		<link>http://www.photosbykev.com/wordpress/2010/05/27/camera-intervalometer-source-code/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/05/27/camera-intervalometer-source-code/#comments</comments>
		<pubDate>Thu, 27 May 2010 19:58:30 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1428</guid>
		<description><![CDATA[Canon Camera Controller &#8211; nickname C-Cubed The system contains the Arduino Mega micro processor, a 20 x 4 LCD display, a TSL230R light to frequency convertor, the DT1307 real time clock and a SHT10 temperature and humidity sensor. Please note that the SHT10 sensor is not fully compliant with the I2C protocol, it will be [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Canon Camera Controller &#8211; nickname C-Cubed</strong></p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3902.jpg" title="Arduino powered intervalometer for Canon cameras" class="shutterset_singlepic2720" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2720&amp;width=600&amp;height=400&amp;mode=" alt="img_3902" title="img_3902" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_7595.jpg" title="Arduino powered intervalometer for Canon cameras" class="shutterset_singlepic2734" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2734&amp;width=600&amp;height=400&amp;mode=" alt="img_7595" title="img_7595" />
</a>
</p>
<p>The system contains the Arduino Mega micro processor, a 20 x 4 LCD display, a TSL230R light to frequency convertor, the DT1307 real time clock and a SHT10 temperature and humidity sensor. Please note that the SHT10 sensor is not fully compliant with the I2C protocol, it will be replaced by the SHT21 sensor which is compliant.</p>
<p>The following arduino software code has been developed to control most digital cameras. It allows you to define the interval between photographs and the the length of the pulse to trigger the camera. If the camera is in Auto or Manual modes then the pulse length should be around 50-60ms; in Bulb mode the pulse length can be increased to accurately control the bulb exposure time or used for bulb ramping in a time lapse sequence.</p>
<p>The code has been developed to avoid the use of delay() functions, except in the setup loop, this means that the buttons and LCD display remain fully functional and exposure times can be changed between photographs.</p>
<p>Mechanical and electrical details of the project can be<a title="http://www.photosbykev.com/wordpress/2010/05/20/Arduino intervalometer for digital cameras" href="http://www.photosbykev.com/wordpress/2010/05/20/arduino-intervalometer-for-digital-cameras/" target="_blank"> seen here</a></p>
<hr />ccc_main.pde is the main code, the remaining blocks should be put into individual tabs inside the Arduino interface.</p>
<p><strong>History</strong><br />
v1.5 &#8211; first release<br />
v1.6 &#8211; added routine that saves Interval and Exposure values to EEPROM and reloads them next time the system is used. Press Red button on startup to load default values.<br />
v1.7 &#8211; minor bug fixes relating to the LCD display, zip file updated.</p>
<p><a title="CCC Main Source code" href="http://www.photosbykev.com/misc/ccc17.zip" target="_blank">The Arduino code can be downloaded from here as a zip file</a>. Updated to v1.7 13/06/10<br />
<strong><br />
</strong></p>
<p><strong>Please be aware that the code blocks shown below may not be the latest version but the zip file will always be the latest version.</strong></p>
<hr />ccc_main.pde</p>
<pre class="brush: plain;">
/*
 Canon Camera Controller (nickname C-Cubed)
 version 1.6 - 03/06/10
 Author      - K Lewis www.photosbykev.com

 The system uses the normal camera pulses to trigger the camera in auto/manual modes.
 The pulse length can be adjusted so that it can also control the bulb exposures.
 All timing loops are non blocking so the buttons and lcd remain functional.

 Tested on Canon 7D and 40D cameras but will work on most systems with minor changes

 History
 v1.5 - first release
 v1.6 - added routine that saves Interval and Exposure values and reloads them next time the system is used. Press Red button on startup to load default values

 Things to do:
 1. programme up a decent clock setting routine
 2. interface the system to control DSLR Remote Pro to control ISO ramping

 This program is free software: you can redistribute it
 and/or modify it under the terms of the GNU General
 Public License as published by the Free Software
 Foundation, either version 3 of the License, or (at
 your option) any later version.

 This program is distributed in the hope that it will be
 useful, but WITHOUT ANY WARRANTY; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A
 PARTICULAR PURPOSE. See the GNU General Public License
 for more details.

 The core of the non blocking software is based on code
 supplied by Shutterdrone on the OpenMoco website under
 the terms of the GNU General Public License.
 */

// Libraries used
#include &lt;LiquidCrystal.h&gt; // library from LCD display
#include &lt;MsTimer2.h&gt;      // library for interrupt control
#include &quot;Wire.h&quot;          // used with DS1307
#include &lt;stdlib.h&gt;        // string manipulation etc
#include &lt;EEPROM.h&gt;        // used to save variables to eeprom

// Camera pin definitions
#define SHUTTER_PIN 22     // digital output for shutter
#define FOCUS_PIN   23     // digital output for focus tap
#define PCSYNC_PIN  24     // digital input for pcsync confirmation - not implimented yet
#define CAMLED_PIN  25     // digital output for &quot;shutter fired&quot; LED

// Button definitions
#define B_LT 49                      // Left button
#define B_RT 50                      // Right button
#define B_UP 51                      // Up button
#define B_DN 52                      // Down button
#define B_CT 53                      // Centre button

unsigned long button_hit = 0;        // time last button was hit

// define battery status variables
int       batteryPin = 0;            // analogue pin 0 hard wired to battery status line
float     batteryValue;              // true battery voltage
int       batteryPercent;            // % full against max reference voltage
float     batteryMaxVolts = 4.15;    // max reference voltage (full charge)
float     batteryMinVolts = 3.35;    // min battery voltage (low alarm at batteryMinVolts + 0.1v)
float     batteryAverage = 0;        // the average voltage

// variables used to smooth the voltage reading
const int numReadings = 20;          // no. of samples for voltage smoothing
int       readings[numReadings];     // the readings from the analog input
int       index = 0;                 // the index of the current reading
int       total = 0;                 // the running total

// assign other variables
char* clearline = &quot;                    &quot;; // empty line string

// buffer for string conversion
char  buffer_Msg[] = &quot;123456578901234567890&quot;;

// main display strings
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(31, 33, 35, 37, 39, 41);

#define   lcd_LIGHT 29            // digital pin controlling LCD backlight
boolean   lcd_SW;                 // flag for controlling backlight status
int       lcd_TIMEOUT = 30000;    // timeout delay before screen turns off
float     lcd_TIMER;              // Backlight timer used with millis()
int       lcd_LAST_UPDATE = 200;  // Only update display every 200 ms
float     lcd_UPDATE_TM = 0;      // variable to check against millis

// arrays used to build custom characters
byte UP[8] = // array to make an arrow pointing UP
{
  B00000,
  B00100,
  B01110,
  B11111,
  B00100,
  B00100,
  B00100,
  B00000
};
byte DOWN[8] = // array to make an arrow pointing DOWN
{
  B00000,
  B00100,
  B00100,
  B00100,
  B11111,
  B01110,
  B00100,
  B00000
};
byte LEFT[8] = // array to make an arrow pointing LEFT
{
  B00000,
  B00000,
  B00100,
  B01100,
  B11111,
  B01100,
  B00100,
  B00000
};
byte RIGHT[8] = // array to make an arrow pointing RIGHT
{
  B00000,
  B00000,
  B00100,
  B00110,
  B11111,
  B00110,
  B00100,
  B00000
};

/*
LiquidCrystal KEYWORDS
 #######################################
 # Methods and Functions
 #######################################

 begin
 clear
 home
 print
 setCursor
 cursor
 noCursor
 blink
 noBlink
 display
 noDisplay
 autoscroll
 noAutoscroll
 leftToRight
 rightToLeft
 scrollDisplayLeft
 scrollDisplayRight
 createChar
 */

// setup RTC
#define DS1307_I2C_ADDRESS 0x68

// Convert normal decimal numbers to binary coded decimal
byte decToBcd(byte val)
{
  return ( (val/10*16) + (val%10) );
}

// Convert binary coded decimal to normal decimal numbers
byte bcdToDec(byte val)
{
  return ( (val/16*10) + (val%16) );
}

// 1) Sets the date and time on the ds1307
// 2) Starts the clock
// 3) Sets hour mode to 24 hour clock
// Assumes you're passing in valid numbers

void setDateDs1307 (
byte second,        // 0-59
byte minute,        // 0-59
byte hour,          // 1-23
byte dayOfWeek,     // 1-7
byte dayOfMonth,    // 1-28/29/30/31
byte month,         // 1-12
byte year)          // 0-99

{
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.send(decToBcd(second));    // 0 to bit 7 starts the clock
  Wire.send(decToBcd(minute));
  Wire.send(decToBcd(hour));      // If you want 12 hour am/pm you need to set
  // bit 6 (also need to change readDateDs1307)
  Wire.send(decToBcd(dayOfWeek));
  Wire.send(decToBcd(dayOfMonth));
  Wire.send(decToBcd(month));
  Wire.send(decToBcd(year));
  Wire.endTransmission();
}

// Gets the date and time from the ds1307
void getDateDs1307(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,
byte *month,
byte *year)

{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_I2C_ADDRESS);
  Wire.send(0);
  Wire.endTransmission();

  Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

  // A few of these need masks because certain bits are control bits
  *second     = bcdToDec(Wire.receive() &amp; 0x7f);
  *minute     = bcdToDec(Wire.receive());
  *hour       = bcdToDec(Wire.receive() &amp; 0x3f);  // Need to change this if 12 hour am/pm
  *dayOfWeek  = bcdToDec(Wire.receive());
  *dayOfMonth = bcdToDec(Wire.receive());
  *month      = bcdToDec(Wire.receive());
  *year       = bcdToDec(Wire.receive());
}

// functions for EEPROM memory read/write
template &lt;class T&gt; int EEPROM_writeAnything(int ee, const T&amp; value)
{
  const byte* p = (const byte*)(const void*)&amp;value;
  int mem;
  for (mem = 0; mem &lt; sizeof(value); mem++)
    EEPROM.write(ee++, *p++);
  return mem;
}

template &lt;class T&gt; int EEPROM_readAnything(int ee, T&amp; value)
{
  byte* p = (byte*)(void*)&amp;value;
  int mem;
  for (mem= 0; mem &lt; sizeof(value); mem++)
    *p++ = EEPROM.read(ee++);
  return mem;
}

// Camera function variables
long          INTERVAL_TM = 1200;              // default interval delay between exposures
int           MIN_INTERVAL_TM = 100;           // minimum interval delay

long          EXPOSURE_TM = 60;                // default exposure length (how long to fire camera)
int           MIN_EXPOSURE_TM = 60;            // minimum exposure (pulse length)

float         EXPOSURE_INC = 1.05;             // percentage to increase or decrease exposure
float         EXPOSURE_DEC = 0.95;

unsigned long LAST_TM = 0;                     // last time camera fired
long          SHOT_COUNT = 0;                  // running total of photographs taken
boolean       SEQ_RUNNING = false;             // is the camera running a sequence
boolean       EXPOSING = false;                // whether or not we're currently exposing

// values to read/write to Eeprom, rememeber they are &quot;configuration.INTERVAL_TM&quot; etc.
// they are not the same as INTERVAL_TM etc
struct config_t
{
  long INTERVAL_TM;
  long EXPOSURE_TM;
}
configuration;

void setup() {

  // initialise all battery array readings to 0
  for (int thisReading = 0; thisReading &lt; numReadings; thisReading++)
    readings[thisReading] = 0;

  // preload battery arrays with a cycle through the analogue readings
  // to avoid silly numbers appearing on the initial display
  int temp;
  for (temp =0; temp &lt;= numReadings; temp++){
    get_Battery();
  }

  // setup pins for input/output
  pinMode(SHUTTER_PIN, OUTPUT);
  pinMode(FOCUS_PIN, OUTPUT);
  pinMode(PCSYNC_PIN, INPUT);
  pinMode(CAMLED_PIN, OUTPUT);

  // set input button pins
  pinMode(B_LT, INPUT);  // Left
  pinMode(B_RT, INPUT);  // Right
  pinMode(B_UP, INPUT);  // Up
  pinMode(B_DN, INPUT);  // Down
  pinMode(B_CT, INPUT);  // Centre

  // setup display
  pinMode (lcd_LIGHT, OUTPUT);
  digitalWrite(lcd_LIGHT, HIGH);
  lcd_SW = HIGH;        // turn on LCD backlight
  lcd_TIMER = millis(); // set timer start

  // set up the LCD's number of rows and columns:
  // Note 4 rows from 0 to 3
  lcd.begin(20, 4);

  // creates custom characters from the arrays storing them to
  // one of 8 (0-7) available custom character slots.
  lcd.createChar(0, UP);
  lcd.createChar(1, DOWN);
  lcd.createChar(2, LEFT);
  lcd.createChar(3, RIGHT);

  /* use lcd.write() for custom Arrow characters
   lcd.write(0);     UP
   lcd.write(1);     DOWN
   lcd.write(2);     LEFT
   lcd.write(3);     RIGHT
   */

  // display intro screen
  lcd.clear();
  lcd.setCursor(4, 0);
  lcd.print(&quot;Canon Camera&quot;);
  lcd.setCursor(5, 1);
  lcd.print(&quot;Controller&quot;);
  lcd.setCursor(8, 2);
  lcd.print(&quot;C^3&quot;);
  lcd.setCursor(4, 3);
  lcd.print(&quot;version  1.6&quot;);
  delay(2000);
  lcd.clear();

  // check if Centre button is pressed on startup.
  // If LOW load values from memory (default is to load memory values)
  // if HIGH load default values
  if( digitalRead(B_CT) == LOW)
  {
    EEPROM_readAnything(0, configuration);
    INTERVAL_TM = configuration.INTERVAL_TM;
    EXPOSURE_TM = configuration.EXPOSURE_TM;

    lcd.setCursor(0, 1);
    lcd.print(&quot; Saved data loaded&quot;);
    lcd.setCursor(0, 2);
    lcd.print(&quot;Press FIRE to reset&quot;);
    delay(1000);
    lcd.clear();
  }
  else
  {
    lcd.setCursor(0, 1);
    lcd.print(&quot;Default data loaded&quot;);
    delay(1000);
    lcd.clear();
  }

  // display main screen
  lcd.setCursor(0, 0);
  lcd.print(&quot;Interval = &quot;);
  lcd.setCursor(18, 0);
  lcd.write(0);                // UP arrow
  lcd.write(1);                // DOWN arrow

  lcd.setCursor(0, 1);
  lcd.print(&quot;Exposure = &quot;);
  lcd.setCursor(18, 1);
  lcd.write(2);                // LEFT arrow
  lcd.write(3);                // RIGHT arrow

  lcd.setCursor(0,2);
  lcd.print(&quot;Shot     = &quot;);

  // setup DS1307 (need to convert this into a proper clocking setting routine)
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
  Wire.begin();
  // Change these values to what you want to set your clock to.
  // You probably only want to set your clock once and then remove
  // the setDateDs1307 call.
  // unrem next lines to set clock
  /*
   second = 0;
   minute = 25;
   hour = 12;
   dayOfWeek = 4;
   dayOfMonth = 20;
   month = 5;
   year = 10;
   setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);
   */
}

void loop() {

  if (SEQ_RUNNING == true) {
    shutter_control();
  }
  user_input();
}
</pre>
<hr />battery_status.pde</p>
<pre class="brush: plain;">
/*
check battery status and work out percentage life left in the lithium battery
*/

// Battery Status
void get_Battery()  {
  // read the value from the battery sensor analogue pin (full charge voltage = batteryMaxVolts)
  // create a rolling average over 20 samples

  // subtract the last reading:
  total = total - readings[index];

  // read from the sensor:
  readings[index] = analogRead(batteryPin);

  // add the reading to the total:
  total = total + readings[index];
  // advance to the next position in the array:
  index = index + 1;

  // if we're at the end of the array...
  if (index &gt;= numReadings)
    // ...wrap around to the beginning:
    index = 0;

  // calculate the average:
  batteryAverage = total / numReadings;

  // convert to volts
  batteryValue = (batteryAverage/1024)*5; // 1024 = 5 volts
  batteryPercent = ((batteryValue-batteryMinVolts)/(batteryMaxVolts-batteryMinVolts))*100;
}
</pre>
<hr />lcd_display.pde</p>
<pre class="brush: plain;">
/*
Update display every lcd_UPDATE_TM ms
*/

void update_LCD() {

  // only update every lcd_UPDATE_TM ms
  if (millis() - lcd_UPDATE_TM &gt; lcd_LAST_UPDATE) {

    // update display
    lcd.setCursor(11, 0);
    lcd.print(&quot;     &quot;);
    lcd.setCursor(11, 0);
    lcd.print(INTERVAL_TM);

    lcd.setCursor(11, 1);
    lcd.print(&quot;     &quot;);
    lcd.setCursor(11, 1);
    lcd.print(EXPOSURE_TM);

    lcd.setCursor(11, 2);
    lcd.print(&quot;     &quot;);
    lcd.setCursor(11, 2);
    lcd.print(SHOT_COUNT);

    // update status line with time and battery
    // Update clock on status line
    get_Clock();

    // update Battery on status line
    get_Battery();
    lcd.setCursor(11, 3);
    lcd.print(&quot;B     &quot;);
    lcd.setCursor(12, 3);
    lcd.print(batteryPercent);
    lcd.print(&quot;%&quot;);

    // check battery status and display label
    if (batteryPercent &lt;= 5){
      lcd.setCursor(17,3);
      lcd.print(&quot;LOW&quot;);
    }
    else
    {
      lcd.setCursor(17,3);
      lcd.print(&quot; OK&quot;);
    }
    // update update timer
    lcd_UPDATE_TM = millis();
  }
}
</pre>
<hr />rtc_status.pde</p>
<pre class="brush: plain;">
/*
get update from RTC and display it
*/

void get_Clock()
{
  byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;

  getDateDs1307(&amp;second, &amp;minute, &amp;hour, &amp;dayOfWeek, &amp;dayOfMonth, &amp;month, &amp;year);

  lcd.setCursor(0,3);
  if (hour &lt; 10){
    lcd.print(&quot;0&quot;);
  }
  lcd.print(hour, DEC);
  lcd.print(&quot;:&quot;);
  if (minute &lt; 10){
    lcd.print(&quot;0&quot;);
  }
  lcd.print(minute, DEC);
  lcd.print(&quot;:&quot;);
  if (second &lt; 10){
    lcd.print(&quot;0&quot;);
  }
  lcd.print(second, DEC);
}
</pre>
<hr />shutter_control.pde</p>
<pre class="brush: plain;">
/*
control the camera and the interrupt
*/

void shutter_control() {

  // if the camera is not currently exposing, and our
  // timer has elapsed, fire camera...

  if( EXPOSING == false &amp;&amp; millis() - LAST_TM &gt; INTERVAL_TM ) {

    // set timer interrupt to call our
    // function to disengage the camera
    MsTimer2::set( EXPOSURE_TM, shutter_off );

    // enable timer
    MsTimer2::start();

    // set flag to indicate that we're currently
    // exposing

    EXPOSING = true;

    // enable optocoupler and LED
    digitalWrite(SHUTTER_PIN, HIGH);
    digitalWrite(CAMLED_PIN, HIGH);

    SHOT_COUNT++;

  } // end if not exposing and timer has elapsed
}

void shutter_off() {

  // disable optocoupler and LED
  digitalWrite(SHUTTER_PIN, LOW);
  digitalWrite(CAMLED_PIN, LOW);

  // disable timer
  MsTimer2::stop();

  // we set this now to ensure that our
  // interval time is measured from the
  // time an image is completed until the
  // time the next one is triggered
  //
  // if you want the interval time to be
  // measured between the time the image
  // is triggered and the next image is
  // triggered, move this to before
  // bringing the camera pin high

  LAST_TM = millis();

  // reset exposing flag
  EXPOSING = false;
}
</pre>
<hr />user_input.pde</p>
<pre class="brush: plain;">
/*
 user input functions
 */

void user_input() {
  // this function determines if any button has been hit,
  // and what to do about it
  // up and down do not require a HIGH (unpressed) reading
  // so that you can hold them down and quickly cycle through
  // values (about 3 changes per second)

  update_LCD();

  // check to turn off backlight
  if (lcd_SW == HIGH){

    if (lcd_TIMER + lcd_TIMEOUT &lt; millis()) {
      lcd_SW = LOW;
      digitalWrite(lcd_LIGHT, LOW);
    }
  }

  // check for button press
  if( digitalRead(B_UP) == HIGH &amp;&amp; millis() - button_hit &gt; 300) {

    if (lcd_SW == LOW &amp;&amp; millis() - button_hit &gt; 300) {
      lcd_ON();
      button_hit = millis();
      return;
    }
    else
    {
      take_button_action(0);
      button_hit = millis();
      return;
    }
  }

  if( digitalRead(B_DN) == HIGH &amp;&amp; millis() - button_hit &gt; 300 ) {
    //pre_dn = true;

    lcd_ON();
    take_button_action(1);
    button_hit = millis();
    return;
  }

  if( digitalRead(B_LT) == HIGH &amp;&amp; millis() - button_hit &gt; 300 ) {

    if (lcd_SW == LOW &amp;&amp; millis() - button_hit &gt; 300) {
      lcd_ON();
      button_hit = millis();
      return;
    }
    else
    {

      take_button_action(2);
      button_hit = millis();
      return;
    }
  }

  if( digitalRead(B_RT) == HIGH &amp;&amp; millis() - button_hit &gt; 300) {

    if (lcd_SW == LOW &amp;&amp; millis() - button_hit &gt; 300) {
      lcd_ON();
      button_hit = millis();
      return;
    }
    else
    {
      take_button_action(3);
      button_hit = millis();
      return;
    }
  }

  if( digitalRead(B_CT) == HIGH &amp;&amp; millis() - button_hit &gt; 300) {

    if (lcd_SW == LOW &amp;&amp; millis() - button_hit &gt; 300) {
      lcd_ON();
      button_hit = millis();
      return;
    }
    else
    {
      take_button_action(4);
      button_hit = millis();
      return;
    }
  }
}

void take_button_action( byte button ) {

  switch(button) {
  case 0:
    // up hit
    INTERVAL_TM = INTERVAL_TM + 100;
    // update memory
    configuration.INTERVAL_TM = INTERVAL_TM;
    EEPROM_writeAnything(0, configuration);
    update_LCD();
    return;
    break;

  case 1:
    // down hit
    INTERVAL_TM = INTERVAL_TM - 100;
    if (INTERVAL_TM &lt;= MIN_INTERVAL_TM) {
      INTERVAL_TM = MIN_INTERVAL_TM;
    }
    update_LCD();
    // update memory
    configuration.INTERVAL_TM = INTERVAL_TM;
    EEPROM_writeAnything(0, configuration);
    return;
    break;

  case 2:
    // left hit - reduce exposure
    EXPOSURE_TM = int(EXPOSURE_TM * EXPOSURE_DEC);
    if (EXPOSURE_TM &lt;= MIN_EXPOSURE_TM) {
      EXPOSURE_TM = MIN_EXPOSURE_TM;
    }
    update_LCD();
    // update memory
    configuration.EXPOSURE_TM = EXPOSURE_TM;
    EEPROM_writeAnything(0, configuration);
    return;
    break;

  case 3:
    // right hit - increase exposure
    EXPOSURE_TM = int(EXPOSURE_TM * EXPOSURE_INC);
    // update memory
    configuration.EXPOSURE_TM = EXPOSURE_TM;
    EEPROM_writeAnything(0, configuration);
    update_LCD();
    return;
    break;

  case 4:
    // centre hit

    if (SEQ_RUNNING == true) {
      SEQ_RUNNING = false;
      update_LCD();
    }
    else {
      SEQ_RUNNING = true;
      update_LCD();
    }
    return;
    break;
  }
}

// function to turn on lcd_LIGHT and reset timer
void lcd_ON(){
  lcd_TIMER = millis(); // reset lcd timer
  digitalWrite(lcd_LIGHT, HIGH);
  lcd_SW = HIGH;
}</pre>
<hr />
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Camera+Intervalometer+Source+Code+http://qrmha.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/05/27/camera-intervalometer-source-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Canon 7D &#8211; Noise Handling</title>
		<link>http://www.photosbykev.com/wordpress/2010/05/24/canon-7d-noise-handling/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/05/24/canon-7d-noise-handling/#comments</comments>
		<pubDate>Mon, 24 May 2010 21:03:04 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1415</guid>
		<description><![CDATA[This noise test was done after getting some poor results shooting a time lapse sequence at iso 1000 on my Canon 7D. I produced a Raw test image on the Canon 7D by removing the lens and putting the body cap back on, I then shot a Raw image at iso 1600 for 30 seconds [...]]]></description>
			<content:encoded><![CDATA[<p>This noise test was done after getting some poor results shooting a time lapse sequence at iso 1000 on my Canon 7D.</p>
<p>I produced a Raw test image on the Canon 7D by removing the lens and putting the body cap back on, I then shot a Raw image at iso 1600 for 30 seconds with all High Iso and Long Expsoure noise reduction functions turned off.</p>
<p>The raw file was then processed in turn by Adobe Camera Raw, Digital Photo Professional and DxO Optics Pro 6 to produce 16-bit Tiff files with no sharpening or noise reduction. The Tiff files were processed through Photoshop CS5 in an identical same manner shown next.</p>
<p>An Exposure adjustment layer was applied and the exposure increased by 2 stops to increase the visibility of the noise. A 1000 x 667 pixel rectangle was then cropped from the centre of each image and saved as a jpeg file. If you click on each photograph you will be able to see the 100% versions of the images.</p>
<p><div id="attachment_1416" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/ACR-30secx1600iso.jpg"><img class="size-full wp-image-1416" title="Adobe Camera Raw conversion - 30 sec x 1600 iso" src="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/ACR-30secx1600iso.jpg" alt="ACR - 30 sec x 1600 iso" width="600" height="400" /></a><p class="wp-caption-text">Adobe Camera Raw conversion - 30 sec x 1600 iso</p></div></p>
<p><div id="attachment_1417" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/DPP-30secx1600iso.jpg"><img class="size-full wp-image-1417" title="Digital Photo Professional conversion - 30 sec x 1600 iso" src="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/DPP-30secx1600iso.jpg" alt="Digital Photo Professional conversion - 30 sec x 1600 iso" width="600" height="400" /></a><p class="wp-caption-text">Digital Photo Professional conversion - 30 sec x 1600 iso</p></div></p>
<p><div id="attachment_1418" class="wp-caption aligncenter" style="width: 610px"><a href="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/DxO-30secx1600iso.jpg"><img class="size-full wp-image-1418" title="DxO Optics Pro 6 - 30 sec x 1600 iso" src="http://www.photosbykev.com/wordpress/wp-content/uploads/2010/05/DxO-30secx1600iso.jpg" alt="DxO Optics Pro 6 - 30 sec x 1600 iso" width="600" height="400" /></a><p class="wp-caption-text">DxO Optics Pro 6 - 30 sec x 1600 iso</p></div></p>
<p>To produce the image above processed by DxO I had to turn off all the default auto settings as the resulting image was absolutely appalling!</p>
<p><strong>I know what I&#8217;ll be using in future.</strong></p>
<p><a title="CR2 Test image" href="http://www.photosbykev.com/misc/Raw_testimage.CR2">If you wish to carry out your own tests the 20Mb Raw CR2 file from the Canon 7D is available here</a>. Right click to save the image to your hard drive.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Canon+7D+%E2%80%93+Noise+Handling+http://s6a8y.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/05/24/canon-7d-noise-handling/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Arduino intervalometer for Digital Cameras</title>
		<link>http://www.photosbykev.com/wordpress/2010/05/20/arduino-intervalometer-for-digital-cameras/</link>
		<comments>http://www.photosbykev.com/wordpress/2010/05/20/arduino-intervalometer-for-digital-cameras/#comments</comments>
		<pubDate>Thu, 20 May 2010 18:34:09 +0000</pubDate>
		<dc:creator>photosbykev</dc:creator>
				<category><![CDATA[PhotosbyKev]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[bracketing]]></category>
		<category><![CDATA[bulb ramping]]></category>
		<category><![CDATA[Canon]]></category>
		<category><![CDATA[Canon intervalometer]]></category>
		<category><![CDATA[Canon remote control]]></category>
		<category><![CDATA[DS1307 RTC]]></category>
		<category><![CDATA[frequency to light IC]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[intervalometer]]></category>
		<category><![CDATA[iso ramping]]></category>
		<category><![CDATA[lightrail]]></category>
		<category><![CDATA[remote timer]]></category>
		<category><![CDATA[timelapse]]></category>
		<category><![CDATA[Toas TSL230R]]></category>

		<guid isPermaLink="false">http://www.photosbykev.com/wordpress/?p=1396</guid>
		<description><![CDATA[This intervalometer / remote timer has been built and based on code kindly provided by &#8220;the roaming drone&#8221; and then modified . The main function of this intervalometer system is to allow automated exposure control of the camera using the bulb mode by varying the length of the control pulse that keeps the shutter open [...]]]></description>
			<content:encoded><![CDATA[<p>This intervalometer / remote timer has been built and based on code kindly provided by &#8220;<a title="the roaming drone" href="http://roamingdrone.wordpress.com/2009/03/25/lightrails-dynamic-external-exposure-control-for-time-lapse/" target="_blank">the roaming drone</a>&#8221; and then modified <img src='http://www.photosbykev.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  . The main function of this intervalometer system is to allow automated exposure control of the camera using the bulb mode by varying the length of the control pulse that keeps the shutter open using an external light sensor to calculate the correct camera settings. When used for time lapse photography it should minimise the dreaded flicker that occurs when Av or TV modes are used to adjust the exposure over a long time lapse sequence.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3902.jpg" title="Arduino powered intervalometer for Canon cameras" class="shutterset_singlepic2720" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2720&amp;width=600&amp;height=400&amp;mode=" alt="img_3902" title="img_3902" />
</a>
</p>
<p style="text-align: center;">The Box</p>
<p>As the system is based on the Arduino mega microprocessor I decided to expand the options available to me by including the Toas TSL230R IC for exposure control using bulb and iso ramping and the DS1307 RTC for pre-programming a shooting sequence. The automated bulb ramping and iso ramping functions are being developed to cater for the lighting changes that occur during dawn and dusk without manual intervention so that the shutter speed and iso settings can be adjusted together without changing the exposure.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3905.jpg" title="Arduino powered intervalometer for Canon cameras" class="shutterset_singlepic2723" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2723&amp;width=600&amp;height=400&amp;mode=" alt="img_3905" title="img_3905" />
</a>
</p>
<p style="text-align: center;">The in&#8217;s  and out&#8217;s</p>
<p>Reprogramming the Arduino allows me to do pretty much anything I want with my cameras so I&#8217;ve no doubt it will be used for a lot of projects. <a title="Camera intervalometer using an arduino microprocessor" href="http://www.photosbykev.com/wordpress/2010/05/27/camera-intervalometer-source-code/" target="_blank">A simple ramping intervalometer programme can be found here</a></p>
<p>The code is written to avoid any delay() type functions so it is non-blocking and the keybuttons remain fully functional even when the camera is being controlled.</p>
<p>Currently the box is programmed to control the Camera shutter and focus functions, it has a feedback circuit triggered by the flash socket on the camera which confirms the camera fired. It can manually or automatically vary the shutter speed in bulb mode from as little as 60 milliseconds to days.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3907.jpg" title="Arduino powered intervalometer for Canon cameras" class="shutterset_singlepic2724" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2724&amp;width=600&amp;height=400&amp;mode=" alt="img_3907" title="img_3907" />
</a>
</p>
<p>I won&#8217;t even begin to describe how the dynamic exposure metering works but would highly recommend Chris&#8217;s website for a wealth of information.</p>
<p>Inside the aluminium project box:</p>
<ul>
<li>An Aduino Mega microprocessor.</li>
<li>A 2200 mAH rechargable lithium battery for standalone use.</li>
<li>A DS1307 RTC (real time clock).</li>
<li>A <a href="http://roamingdrone.wordpress.com/2008/11/13/arduino-and-the-taos-tsl230r-light-sensor-getting-started/" target="_blank">Taos TSL230R frequency to light convertor IC<br />
</a> that handles the exposure control.</li>
<li>A 20 x 4 backlit LCD display.</li>
<li>5 momentary push buttons</li>
<li>A green &#8216;shutter open&#8217; led</li>
<li>A lot of wire and stuff.</li>
</ul>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3904.jpg" title="Arduino powered intervalometer for Canon cameras.
The TOAS TSL230R frequency to light IC." class="shutterset_singlepic2722" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2722&amp;width=600&amp;height=600&amp;mode=" alt="img_3904" title="img_3904" />
</a>
</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/img_3903.jpg" title="Arduino powered intervalometer for Canon cameras.
The TOAS TSL230R frequency to light IC." class="shutterset_singlepic2721" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2721&amp;width=600&amp;height=400&amp;mode=" alt="img_3903" title="img_3903" />
</a>
</p>
<p style="text-align: center;">The Taos TSL230R IC</p>
<p>The basic interface to the camera shutter and focus using 4N35 opto isolators to remove any possibility of unwelcome voltages getting into the camera.</p>
<p>
<a href="http://www.photosbykev.com/wordpress/wp-content/gallery/arduino/digital_sw.jpg" title="4n35 opto isolator in use" class="shutterset_singlepic2725" >
	<img class="ngg-singlepic ngg-center" src="http://www.photosbykev.com/wordpress/index.php?callback=image&amp;pid=2725&amp;width=600&amp;height=400&amp;mode=" alt="digital_sw" title="digital_sw" />
</a>
</p>
<p style="text-align: center;">Typical interface using the 4N35 opto isolator</p>
<p>Things to do:</p>
<ul>
<li>Improve the user interface and the GUI.</li>
<li>Develop the bulb ramping and iso ramping process to allow the system to adjust the exposures during sunsets and sunrises.</li>
<li>Interface the Arduino to a netbook so the DSLR Remote Pro library can be used to adjust camera parameters, again without touching the camera.</li>
<li>Add HDR functionality for bracketing photographs across the boundary of 30 seconds. i.e avoiding the need to touch the camera to switch from manual to bulb modes.</li>
<li>Add the schedule programmming for non-attended shooting.</li>
<li>Sort out a method to retain the last user settings in the EEPROM memory</li>
</ul>
<p>This is the first post on the project and a lot more will follow <img src='http://www.photosbykev.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr />23/05/10 &#8211; First test with the new system</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0">
<param name="allowfullscreen" value="true" />
<param name="allowscriptaccess" value="always" />
<param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=11997912&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="600" height="400" src="http://vimeo.com/moogaloop.swf?clip_id=11997912&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/11997912">Time lapse &#8211; Arduino ramping Test</a> from <a href="http://vimeo.com/user3366400">Kevin Lewis</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<p>A time lapse test with the Arduino control system taken from 30 minutes before sunset at 2130 until 2.5 hours after it finishing at midnight. The session was used to tune up an automated control system aimed at minimising flicker. If the clouds hadn&#8217;t come along then I would of carried on shooting.</p>
<p>The initial exposure was 1/80 second @ f5.6 iso 100 and at the end it was 22 seconds @ f5.6 iso 1000</p>
<p>The Canon 7D and 10-22mm lens were connected to an arduino which was running a program to control the bulb exposure length based on the readings from an external light meter. The arduino also controlled the iso ramping during the sequence</p>
<p>Until the exposure was longer than about 1/20second it was necessary to use manual adjustment of the shutter speed and iso using DSLR Remote Pro running on a netbook. From about 45 seconds the system did everything, I do need to work on controlling the progression of the  exposure sequence to stop the slight bouncing that is visible and I&#8217;ve also found some hot pixels <img src='http://www.photosbykev.com/wordpress/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  BUT I think I&#8217;ve resolved that after doing <a title="Canon 7D - Noise Handling" href="http://www.photosbykev.com/wordpress/2010/05/24/canon-7d-noise-handling/ " target="_blank">a quick test here </a></p>
<p>No attempt has been made to remove birds, flicker or process the images before compiling the video.</p>
<p>Early days but getting there <img src='http://www.photosbykev.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<hr />Simple arduino code can be copied <a title="Camera intervalometer using an arduino microprocessor" href="http://www.photosbykev.com/wordpress/2010/05/27/camera-intervalometer-source-code/" target="_blank">from here</a> to run the project as a normal camera intervalometer.</p>
<p align="center"><a class="tt" href="http://twitter.com/home/?status=Arduino+intervalometer+for+Digital+Cameras+http://53q98.th8.us" title="Post to Twitter"><img class="nothumb" src="http://www.photosbykev.com/wordpress/wp-content/plugins/tweet-this/icons/tt-twitter-big4.png" alt="Post to Twitter" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://www.photosbykev.com/wordpress/2010/05/20/arduino-intervalometer-for-digital-cameras/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
