<?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>Awooga!!! &#187; blog</title>
	<atom:link href="http://awooga.nl/category/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://awooga.nl</link>
	<description>how hard can it be?</description>
	<lastBuildDate>Tue, 05 Apr 2011 12:46:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Fuel light bingo</title>
		<link>http://awooga.nl/fuel-light-bingo</link>
		<comments>http://awooga.nl/fuel-light-bingo#comments</comments>
		<pubDate>Tue, 05 Apr 2011 12:46:28 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[bmw]]></category>
		<category><![CDATA[fuelly]]></category>
		<category><![CDATA[m5]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=536</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fuelly.com/driver/Quinten/m5" target="_blank" class="liimagelink"><img src="http://www.fuelly.com/sig-uk/66170.png" width="500" height="63" alt="Fuelly" title="Share and compare MPG at Fuelly" border="0"/></a></p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/fuel-light-bingo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Droidock</title>
		<link>http://awooga.nl/droidock</link>
		<comments>http://awooga.nl/droidock#comments</comments>
		<pubDate>Thu, 03 Feb 2011 22:28:52 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[chargers]]></category>
		<category><![CDATA[crafts]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[dock]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[modaco]]></category>
		<category><![CDATA[modding]]></category>
		<category><![CDATA[orange]]></category>
		<category><![CDATA[san francisco]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[work]]></category>
		<category><![CDATA[zte blade]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=527</guid>
		<description><![CDATA[About two weeks ago, I finally bit the bullet and retired my trusty iPhone 3G, and went to the dark bright side, with an Orange San Francisco (also known as the ZTE Blade). At £99 (including a compulsory £10 Orange topup) it can be SIM unlocked for free and flashed to Froyo 2.2 with a [...]]]></description>
			<content:encoded><![CDATA[<p>About two weeks ago, I finally bit the bullet and retired my trusty <a href="/officially-sad-or-officially-geek" class="liinternal">iPhone 3G</a>, and went to the <del>dark</del> bright side, with an <a href="http://newsroom.orange.co.uk/2010/09/21/orange-brings-android-to-the-masses-with-the-launch-of-san-francisco/" target="_blank" class="liexternal">Orange San Francisco</a> (also known as the <a href="http://wwwen.zte.com.cn/en/press_center/news/201011/t20101108_194339.html" target="_blank" class="liexternal">ZTE Blade</a>).  At £99 (including a compulsory £10 Orange topup) it can be <a href="http://arrtoo.x10.mx/unlockBlade.php" target="_blank" class="liexternal">SIM unlocked for free</a> and flashed to <a href="http://en.wikipedia.org/wiki/Android_%28operating_system%29" target="_blank" class="liexternal">Froyo 2.2</a> with a variety of <a href="http://android.modaco.com/content/zte-blade-roms-rom-customisation/329856/02-feb-roms-current-known-available-roms-for-the-zte-blade/" target="_blank" class="liexternal">ROMs</a>.</p>
<p>But despite a incredible take up by punters everywhere, the lack of handset accessories is frustrating.  Until recently we couldn&#8217;t even get an OSF specific screen protector, let alone a <a href="http://android.modaco.com/content/zte-blade-blade-modaco-com/319419/suitable-silicone-case-screen-protector-for-san-francisco-by-orange/" target="_blank" class="liexternal">protective cover</a>.  And still we can not buy a desktop charger that fits!</p>
<p>And so, when a colleague was unpacking a toner cartridge and I spotted the polystyrene padding material, I thought, why not bodge one myself?</p>
<p><a href="/gallery/modding/droidock/Photo+Feb+03_+9+36+47+PM.jpg.html" class="liimagelink"><img src="/g/image/37850-4/Photo+Feb+03_+9+36+47+PM.jpg" alt="" class="aligncenter" /></a></p>
<p>15 minutes (and a sharp blade) later, and voila!</p>
<p><a href="/gallery/modding/droidock/Photo+Feb+03_+9+36+30+PM.jpg.html" class="liimagelink"><img src="/g/image/37844-3/Photo+Feb+03_+9+36+30+PM.jpg" alt="" /></a> <a href="/gallery/modding/droidock/Photo+Feb+03_+9+37+03+PM.jpg.html" class="liimagelink"><img src="/g/image/37853-3/Photo+Feb+03_+9+37+03+PM.jpg" alt="" /></a> <a href="/gallery/modding/droidock/Photo+Feb+03_+9+37+19+PM.jpg.html" class="liimagelink"><img src="/g/image/37857-3/Photo+Feb+03_+9+37+19+PM.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/droidock/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ooh Arr-duino</title>
		<link>http://awooga.nl/ooh-arr-duino</link>
		<comments>http://awooga.nl/ooh-arr-duino#comments</comments>
		<pubDate>Thu, 03 Feb 2011 14:45:38 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[chargers]]></category>
		<category><![CDATA[ciseco]]></category>
		<category><![CDATA[crafts]]></category>
		<category><![CDATA[dfrobot]]></category>
		<category><![CDATA[ebay]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[i2c]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[makezine]]></category>
		<category><![CDATA[maplin]]></category>
		<category><![CDATA[modding]]></category>
		<category><![CDATA[relay]]></category>
		<category><![CDATA[shield]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[timer]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=495</guid>
		<description><![CDATA[Santa this year was very generous to my son and gifted him with a Maverick Atom XT RTR 1/18 Electric 4WD Truggy but failed to mention that the batteries that came with it could only be left in the charger for 6 hours, no longer. With grave warnings about explosions and fire, I tried to [...]]]></description>
			<content:encoded><![CDATA[<p>Santa this year was very generous to my son and gifted him with a <a href="http://www.hpiracing.co.uk/piw.php?partNo=MV12102" target="_blank" class="liexternal">Maverick Atom XT RTR 1/18 Electric 4WD Truggy</a> but failed to mention that the batteries that came with it could only be left in the charger for 6 hours, no longer.  With grave warnings about explosions and fire, I tried to find an egg-timer on a socket kind of solution, but could not find anything that would go beyond 4 hours.</p>
<p>So what is a <a href="http://en.wikipedia.org/wiki/Tinkerer" target="_blank" class="liexternal">tinkerer</a> to do?  He makes one himself! ;)<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
A long time ago I bought an <a href="http://arduino.cc/en/Main/ArduinoBoardDuemilanove" target="_blank" class="liexternal">Arduino</a>, but never really got any further with it than a blinking RGB led.  Now I finally found a purpose for it :)  I was going to build an Arduino controlled timer socket!</p>
<p>All I needed now were some kind of relay, some sockets, a few buttons and a way of letting <del>the user</del> my son know what the time was set to and if it was on or not.  I ended up with a <a href="http://www.ciseco.co.uk/content/?p=1515" target="_blank" class="liexternal">Ciseco Arduino Relay Shield</a>, two <a href="http://www.maplin.co.uk/push-to-make-switch-34858" target="_blank" class="liexternal">Maplin push-to-make switches</a>, a <a href="http://www.dfrobot.com/index.php?route=product/product&#038;path=53&#038;product_id=135" target="_blank" class="liexternal">DFRobot I2C 16&#215;2 LCD</a> and a <a href="http://www.maplin.co.uk/mb-plastic-boxes-1676" target="_blank" class="liexternal">Maplin project box</a> big enough to fit it all in</p>
<blockquote><p><b>First a small word of warning.</b>  You are dealing with <b>MAINS voltage</b>, which can be lethal if you fool around.  <b>DO NOT EVER!</b> connect the bits to mains power when parts of it are exposed.  You&#8217;ve been warned</p></blockquote>
<p><a href="/gallery/modding/arduino/DSC04157.JPG.html" class="liimagelink"><img src="/g/image/37596-3/DSC04157.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04158.JPG.html" class="liimagelink"><img src="/g/image/37601-3/DSC04158.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04159.JPG.html" class="liimagelink"><img src="/g/image/37605-3/DSC04159.JPG" alt="" /></a></p>
<p>I started off with a small mockup of materials and then got my trusty Dremel clone out and started cutting away at the project case.</p>
<p><a href="/gallery/modding/arduino/DSC04160.JPG.html" class="liimagelink"><img src="/g/image/37609-3/DSC04160.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04161.JPG.html" class="liimagelink"><img src="/g/image/37613-3/DSC04161.JPG" alt="" /></a></p>
<p>First off is the socket in which the battery charger can be plugged.  A small template on paper is by far the easiest way to make sure you don&#8217;t cut out too much behind the socket</p>
<p><a href="/gallery/modding/arduino/DSC04162.JPG.html" class="liimagelink"><img src="/g/image/37617-3/DSC04162.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04164.JPG.html" class="liimagelink"><img src="/g/image/37625-3/DSC04164.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04165.JPG.html" class="liimagelink"><img src="/g/image/37629-3/DSC04165.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04166.JPG.html" class="liimagelink"><img src="/g/image/37633-3/DSC04166.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04167.JPG.html" class="liimagelink"><img src="/g/image/37637-3/DSC04167.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04168.JPG.html" class="liimagelink"><img src="/g/image/37641-3/DSC04168.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04169.JPG.html" class="liimagelink"><img src="/g/image/37645-3/DSC04169.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04170.JPG.html" class="liimagelink"><img src="/g/image/37649-3/DSC04170.JPG" alt="" /></a></p>
<p>With the socket in place, I created the template for the LCD.  I took my time with this, as I didn&#8217;t want to cut out too much.  A lot of careful sanding ensured that only the black part would be visible, and nothing else.  Then with the help of some small bolts and nuts, I created some spacers, enabling the LCD to sit nicely in the cutout.  Lots of hotglue completes the mounting</p>
<p><a href="/gallery/modding/arduino/DSC04171.JPG.html" class="liimagelink"><img src="/g/image/37653-3/DSC04171.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04172.JPG.html" class="liimagelink"><img src="/g/image/37657-3/DSC04172.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04173.JPG.html" class="liimagelink"><img src="/g/image/37661-3/DSC04173.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04174.JPG.html" class="liimagelink"><img src="/g/image/37665-3/DSC04174.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04175.JPG.html" class="liimagelink"><img src="/g/image/37669-3/DSC04175.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04176.JPG.html" class="liimagelink"><img src="/g/image/37673-3/DSC04176.JPG" alt="" /></a></p>
<p>The buttons only required some measuring to make sure they are neatly symetric and do not interfere with the LCD</p>
<p><a href="/gallery/modding/arduino/DSC04177.JPG.html" class="liimagelink"><img src="/g/image/37677-3/DSC04177.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04178.JPG.html" class="liimagelink"><img src="/g/image/37681-3/DSC04178.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04179.JPG.html" class="liimagelink"><img src="/g/image/37685-3/DSC04179.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04180.JPG.html" class="liimagelink"><img src="/g/image/37689-3/DSC04180.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04182.JPG.html" class="liimagelink"><img src="/g/image/37697-3/DSC04182.JPG" alt="" /></a></p>
<p>All that remains is the IEC socket where the power will go into the project box</p>
<p><a href="/gallery/modding/arduino/DSC04186.JPG.html" class="liimagelink"><img src="/g/image/37713-3/DSC04186.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04187.JPG.html" class="liimagelink"><img src="/g/image/37717-3/DSC04187.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04188.JPG.html" class="liimagelink"><img src="/g/image/37721-3/DSC04188.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04190.JPG.html" class="liimagelink"><img src="/g/image/37729-3/DSC04190.JPG" alt="" /></a></p>
<p>Now with everything in place, all we need to do is connect the components together with some wire using the below schematic</p>
<p><a href="/gallery/modding/arduino/socket-wiring.jpg.html" class="liimagelink"><img src="/g/image/37838-4/socket-wiring.jpg" alt="" class="aligncenter" /></a></p>
<p>Warm up the soldering iron and just follow the diagram.  As my soldering skills are not that great, I also used a bit of heatshrink here and there to make sure that wires could not short on each other :)</p>
<p><a href="/gallery/modding/arduino/DSC04191.JPG.html" class="liimagelink"><img src="/g/image/37733-3/DSC04191.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04192.JPG.html" class="liimagelink"><img src="/g/image/37737-5/DSC04192.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04193.JPG.html" class="liimagelink"><img src="/g/image/37741-3/DSC04193.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04194.JPG.html" class="liimagelink"><img src="/g/image/37745-3/DSC04194.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04195.JPG.html" class="liimagelink"><img src="/g/image/37749-3/DSC04195.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04200.JPG.html" class="liimagelink"><img src="/g/image/37769-5/DSC04200.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04198.JPG.html" class="liimagelink"><img src="/g/image/37761-5/DSC04198.JPG" alt="" /></a></p>
<p>I&#8217;m using an old iPhone charger to power the Arduino as it provides a neat 5V/1A, with a small retractable USB lead with a Type A to B converter.  A quick test of the wiring to make sure it all works as planned</p>
<p><a href="/gallery/modding/arduino/DSC04196.JPG.html" class="liimagelink"><img src="/g/image/37754-6/DSC04196.JPG" alt="" class="aligncenter" /></a></p>
<p>Now with construction over, it was time to do the Arduino coding.  The LCD uses the <a href="/stuff/LiquidCrystal_I2C.zip" class="lizip">LiquidCrystal I2C</a> library which takes care of all the hard work interfacing to it.  Likewise, the <a href="/stuff/Metro.zip" class="lizip">Metro</a> library takes care of the timer.  So, it is just a simple case of increasing the clock by an hour every time the red button is pressed, and starting the timer when the green button is pressed.  Once the timer is running, any button press will stop the timer and reset the state to the beginning.</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">// Arduino controlled timer socket</span>
<span style="color: #666666; font-style: italic;">// (CC BY) 2011</span>
<span style="color: #666666; font-style: italic;">// http://awooga.nl</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// pull in libraries</span>
<span style="color: #339933;">#include &lt;Wire.h&gt;</span>
<span style="color: #339933;">#include &lt;LiquidCrystal_I2C.h&gt;</span>
<span style="color: #339933;">#include &lt;Metro.h&gt;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// arduino pins constants</span>
<span style="color: #339933;">#define RELAY 2 // black wire connected to input on shield</span>
<span style="color: #339933;">#define RED   6 // green wire</span>
<span style="color: #339933;">#define GREEN 7 // white wire</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// i2c pin A5 = white wire</span>
<span style="color: #666666; font-style: italic;">// i2c pin A4 = green wire</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// allow between 1 and 6 hours</span>
<span style="color: #339933;">#define MINIMUM_TIME 1</span>
<span style="color: #339933;">#define DEFAULT_TIME 6</span>
<span style="color: #339933;">#define MAXIMUM_TIME 6</span>
&nbsp;
&nbsp;
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> MILLISECONDS<span style="color: #339933;">=</span><span style="color: #0000dd;">1</span><span style="color: #339933;">;</span>
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> SECONDS<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #339933;">*</span>MILLISECONDS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> MINUTES<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">60</span><span style="color: #339933;">*</span>SECONDS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> HOURS<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">60</span><span style="color: #339933;">*</span>MINUTES<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> DAYS<span style="color: #339933;">=</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">24</span><span style="color: #339933;">*</span>HOURS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #993333;">const</span> <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> UNITS<span style="color: #339933;">=</span>HOURS<span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// prgram states</span>
<span style="color: #339933;">#define IDLE         0</span>
<span style="color: #339933;">#define RED_BUTTON   1</span>
<span style="color: #339933;">#define GREEN_BUTTON 2</span>
<span style="color: #339933;">#define MENU         3</span>
<span style="color: #339933;">#define PAUSE        4</span>
<span style="color: #339933;">#define STOP_TIMER   5</span>
<span style="color: #339933;">#define CANCEL_TIMER 6</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// global variables</span>
byte events<span style="color: #339933;">;</span>
byte countdowntime<span style="color: #339933;">;</span>
boolean menu_running<span style="color: #339933;">;</span>
boolean timer_running<span style="color: #339933;">;</span>
&nbsp;
boolean debug <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
byte currentRed <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
byte currentGreen <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
byte previousRed <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
byte previousGreen <span style="color: #339933;">=</span> LOW<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// set the LCD address to 0x27 for the 16x2 display</span>
LiquidCrystal_I2C lcd<span style="color: #009900;">&#40;</span><span style="color: #208080;">0x27</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">16</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// initiate Metro object</span>
Metro relayMetro <span style="color: #339933;">=</span> Metro<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// arduino setup routine</span>
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// set the arduino pins</span>
  pinMode<span style="color: #009900;">&#40;</span>RELAY<span style="color: #339933;">,</span> OUTPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>RED<span style="color: #339933;">,</span> INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  pinMode<span style="color: #009900;">&#40;</span>GREEN<span style="color: #339933;">,</span> INPUT<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
&nbsp;
  <span style="color: #666666; font-style: italic;">// initialise the lcd</span>
  lcd.<span style="color: #202020;">init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">backlight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// activate debugging on the serial port</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Lets go!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// initialise variables</span>
  events <span style="color: #339933;">=</span> IDLE<span style="color: #339933;">;</span>
  countdowntime <span style="color: #339933;">=</span> DEFAULT_TIME<span style="color: #339933;">;</span>
  menu_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  timer_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  digitalWrite<span style="color: #009900;">&#40;</span>RELAY<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// arduino loop routine</span>
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span>events<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> IDLE<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> Idling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> MENU<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> MainMenu<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> RED_BUTTON<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> RedButton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> GREEN_BUTTON<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> GreenButton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> PAUSE<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> Pause<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> STOP_TIMER<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> StopTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">case</span> CANCEL_TIMER<span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> CancelTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
      events <span style="color: #339933;">=</span> IDLE<span style="color: #339933;">;</span>
      <span style="color: #000000; font-weight: bold;">break</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> MainMenu<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>timer_running<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> IDLE<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>menu_running<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> IDLE<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;MainMenu()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  lcd.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;  Red: Set time&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">setCursor</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Green: Go (&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>countdowntime<span style="color: #339933;">,</span> DEC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>countdowntime <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hr)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;hrs)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  menu_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> IDLE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> Idling<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
  boolean do_red <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  boolean do_green <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>timer_running<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>relayMetro.<span style="color: #202020;">check</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      <span style="color: #b1b100;">return</span> STOP_TIMER<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  currentRed <span style="color: #339933;">=</span> digitalRead<span style="color: #009900;">&#40;</span>RED<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  currentGreen <span style="color: #339933;">=</span> digitalRead<span style="color: #009900;">&#40;</span>GREEN<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>currentRed <span style="color: #339933;">!=</span> previousRed<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    do_red <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>currentRed <span style="color: #339933;">==</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  previousRed <span style="color: #339933;">=</span> currentRed<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>currentGreen <span style="color: #339933;">!=</span> previousGreen<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    do_green <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>currentGreen <span style="color: #339933;">==</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  previousGreen <span style="color: #339933;">=</span> currentGreen<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span>do_red<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>do_green<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> RED_BUTTON<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>do_red<span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #009900;">&#40;</span>do_green<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> GREEN_BUTTON<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #666666; font-style: italic;">// all other button combinations are ignored</span>
  <span style="color: #b1b100;">return</span> MENU<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> RedButton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;RedButton()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>timer_running<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> CANCEL_TIMER<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">++</span>countdowntime <span style="color: #339933;">&gt;</span> MAXIMUM_TIME<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> countdowntime <span style="color: #339933;">=</span> MINIMUM_TIME<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  lcd.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Time set to&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">setCursor</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>countdowntime<span style="color: #339933;">,</span> DEC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>countdowntime <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; hour&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; hours&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  menu_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> PAUSE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> GreenButton<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;GreenButton()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>timer_running<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #b1b100;">return</span> CANCEL_TIMER<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  lcd.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Running timer&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">setCursor</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;for &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>countdowntime<span style="color: #339933;">,</span> DEC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>countdowntime <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; hour&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; hours&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  <span style="color: #993333;">unsigned</span> <span style="color: #993333;">long</span> t <span style="color: #339933;">=</span> countdowntime <span style="color: #339933;">*</span> UNITS<span style="color: #339933;">;</span>
&nbsp;
  timer_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">true</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Setting metro for &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>t<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot; seconds&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  relayMetro.<span style="color: #202020;">interval</span><span style="color: #009900;">&#40;</span>t<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  digitalWrite<span style="color: #009900;">&#40;</span>RELAY<span style="color: #339933;">,</span> HIGH<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> IDLE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> StopTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;StopTimer()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  digitalWrite<span style="color: #009900;">&#40;</span>RELAY<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  lcd.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Timer finished&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  timer_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  menu_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  relayMetro.<span style="color: #202020;">reset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> PAUSE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> CancelTimer<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>debug<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;CancelTimer()&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
&nbsp;
  digitalWrite<span style="color: #009900;">&#40;</span>RELAY<span style="color: #339933;">,</span> LOW<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  lcd.<span style="color: #202020;">clear</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lcd.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Timer stopped&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  timer_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  menu_running <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">false</span><span style="color: #339933;">;</span>
  relayMetro.<span style="color: #202020;">reset</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #b1b100;">return</span> PAUSE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">int</span> Pause<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  delay<span style="color: #009900;">&#40;</span><span style="color: #0000dd;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #b1b100;">return</span> IDLE<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Or just download the .pde file <a href="/stuff/SocketTimer.pde" class="liinternal">here</a></p>
<p>Obviously you can go all crazy with options and clocks, but I just wanted something quick and working.  Changing the code to do all that is just a matter of opening it up, and uploading the new software.</p>
<p><a href="/gallery/modding/arduino/DSC04201.JPG.html" class="liimagelink"><img src="/g/image/37773-5/DSC04201.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04202.JPG.html" class="liimagelink"><img src="/g/image/37777-3/DSC04202.JPG" alt="" /></a> <a href="/gallery/modding/arduino/DSC04204.JPG.html" class="liimagelink"><img src="/g/image/37785-3/DSC04204.JPG" alt="" /></a></p>
<p><br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /></p>
<p>And just to prove it is all working, here&#8217;s a small video demonstration.  It doesn&#8217;t show the timer ending, you just have to take my word on that :D</p>
<p><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/STLeDXH6rNU?rel=0" /><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><embed wmode="opaque" src="http://www.youtube.com/v/STLeDXH6rNU?rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/ooh-arr-duino/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Mmmmmmm 5!</title>
		<link>http://awooga.nl/mmmmmmm-5</link>
		<comments>http://awooga.nl/mmmmmmm-5#comments</comments>
		<pubDate>Wed, 05 May 2010 20:01:28 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[autotrader]]></category>
		<category><![CDATA[bmw]]></category>
		<category><![CDATA[cars]]></category>
		<category><![CDATA[e39]]></category>
		<category><![CDATA[m5]]></category>
		<category><![CDATA[pistonheads]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=483</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><img src="/g/image/36124-2/autotrader1.jpg" alt="" class="aligncenter"/></p>
<p><a href="/gallery/cars/m5/miscellaneous/autotrader1.jpg.html" class="liimagelink"><img src="/g/image/36125-3/autotrader1.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader2.jpg.html" class="liimagelink"><img src="/g/image/36129-3/autotrader2.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader3.jpg.html" class="liimagelink"><img src="/g/image/36132-3/autotrader3.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader4.jpg.html" class="liimagelink"><img src="/g/image/36135-3/autotrader4.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader5.jpg.html" class="liimagelink"><img src="/g/image/36138-3/autotrader5.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader6.jpg.html" class="liimagelink"><img src="/g/image/36146-3/autotrader6.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader7.jpg.html" class="liimagelink"><img src="/g/image/36149-3/autotrader7.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader8.jpg.html" class="liimagelink"><img src="/g/image/36152-3/autotrader8.jpg" alt="" /></a> <a href="/gallery/cars/m5/miscellaneous/autotrader9.jpg.html" class="liimagelink"><img src="/g/image/36155-3/autotrader9.jpg" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/mmmmmmm-5/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Won&#8217;t someone think of the children?</title>
		<link>http://awooga.nl/wont-someone-think-of-the-children</link>
		<comments>http://awooga.nl/wont-someone-think-of-the-children#comments</comments>
		<pubDate>Wed, 04 Nov 2009 15:36:15 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[blacklist]]></category>
		<category><![CDATA[c521]]></category>
		<category><![CDATA[children]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[filtering]]></category>
		<category><![CDATA[host]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[kids]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[opendns]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[safe surfing]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[tinyproxy]]></category>
		<category><![CDATA[twitter]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[website]]></category>
		<category><![CDATA[whitelist]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=443</guid>
		<description><![CDATA[Let&#8217;s do a quick show of hands of parents who think that the internet is a safe place for children to spend their time on? If you&#8217;ve got your hands up you haven&#8217;t been on the internet for very long. To be completely honest, the internet scares me. Or better, the amount of scary stuff [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s do a quick show of hands of parents who think that the internet is a safe place for children to spend their time on?  If you&#8217;ve got your hands up you haven&#8217;t been on the internet for very long.</p>
<p><img class="alignright size-medium wp-image-454" title="kid-in-shock" src="/wp-content/uploads/2009/11/kid-in-shock-300x199.jpg" alt="kid-in-shock" width="300" height="199" />To be completely honest, the internet scares me.  Or better, the amount of scary stuff that is on it, scares me.  So now that my son is old enough to have his own PC in his bedroom, I looked around to see what was available to make sure that he doesn&#8217;t get exposed to material that is well above his age.  They grow up quick enough anyway.</p>
<p>Now as someone who runs <a href="http://www.ubuntu.com/" target="_blank" class="liexternal">Ubuntu</a> on his <a href="/tag/c521" class="liinternal">server</a>, and <a href="http://www.apple.com/macosx/" target="_blank" class="liexternal">OS X</a> on his <a href="/an-apple-a-day" class="liinternal">MacBook</a>, I am already one step ahead of most parents, who have to deal with a <a href="http://www.microsoft.com/windows/" target="_blank" class="liexternal">Microsoft Windows</a> environment of some sort.  Good luck to you.  This blog post depends on a Linux server of some sort, and although the client can be any operating system, I strongly advice you to stick to a <a href="http://en.wikipedia.org/wiki/Unix-like" target="_blank" class="liexternal">*nix</a> based desktop.</p>
<p>After dismissing most options available (things like <a href="http://www.opendns.com/" target="_blank" class="liexternal">OpenDNS</a>, and a variety of dedicated applications to block any harmful content), I decided that however I was going to implement it, it would have to be by using a <a href="http://en.wikipedia.org/wiki/Whitelist" target="_blank" class="liexternal">whitelist</a>, rather than the normal practice of a <a href="http://en.wikipedia.org/wiki/Blacklist" target="_blank" class="liexternal">blacklist</a>.  The reasoning behind this is that the amount of harmful content changes every minute, and no amount of blacklisting will catch 100% of it.  With a whitelist, everything has to be vetted by me, but it ensures total control over their web experience.  I also wanted to be able to approve/deny new websites as my son requests them, with little effort required on my side.</p>
<p>Something that sits between the client and the internet would be the perfect solution, and I quickly stumbled upon <a href="https://www.banu.com/tinyproxy/" target="_blank" class="liexternal">TinyProxy</a>.  As the name implies, the application is small, efficient, easy to manage and it supports blacklisting and whitelisting.  Perfect.<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
<strong>Requirements</strong></p>
<ul>
<li>A server running your favourite Linux distribution.  I personally use Ubuntu, but for the purpose of this guide, it doesn&#8217;t matter.</li>
<li>TinyProxy as installed by your favourite package manager.  For Ubuntu that&#8217;s as easy as <code>apt-get install tinyproxy</code>, but obviously that will be different if you run something else.  Make a note of the version number of TinyProxy though, as we&#8217;ll need version <a href="https://www.banu.com/tinyproxy/download/" target="_blank" class="liexternal">1.6.5 or later</a>.</li>
<li>A webserver running on your server.  <a href="http://httpd.apache.org/" target="_blank" class="liexternal">Apache2</a> is what I use, but as long as it supports <a href="http://php.net/" target="_blank" class="liexternal">PHP</a>, then it doesn&#8217;t matter.  What does matter though, is that the webserver should be able to access your TinyProxy <code>whitelist</code> file, which if you have both TinyProxy and the webserver running on the same server will be the case.</li>
<li>A client configured to use TinyProxy.  This can be <a href="http://www.mozilla.com/firefox/" target="_blank" class="liexternal">Firefox</a>, <a href="http://www.microsoft.com/windows/Internet-explorer/" target="_blank" class="liexternal">Internet Explorer</a>, <a href="http://www.google.co.uk/chrome" target="_blank" class="liexternal">Chrome</a>, <a href="http://www.opera.com/" target="_blank" class="liexternal">Opera</a>, or any other browser you like to use.  Be aware though that as soon as your child learns what a <a href="http://en.wikipedia.org/wiki/Proxy_server" target="_blank" class="liexternal">proxy</a> is and how to remove it from his PC/laptop, the whole plan falls apart.</li>
</ul>
<p>Before you continue with the next section, make sure that your webserver is able to serve some pages, and that you have confirmed that TinyProxy is working correctly for you.</p>
<p><strong>Installation</strong></p>
<p>Grab the <a href="/stuff/tinyproxy-admin.tar.gz" class="lizip">tinyproxy-admin.tar.gz</a> package and unpack it somewhere on your server.  There are a number of files in there, each of them I will describe below.</p>
<p><code>tinyproxy.32</code><br />
<code>tinyproxy.64</code> &#8211; These two binaries are the 1.6.5 binary patched with a small change to allow TinyProxy&#8217;s child processes to refresh their filter list when the parent receives a <a href="http://en.wikipedia.org/wiki/SIGHUP" target="_blank" class="liexternal">SIGHUP</a> signal and when the <code>whitelist</code> file is changed.  These changes have also been submitted to the development version of TinyProxy, but because <code>apt-get</code> on my Ubuntu system installs 1.6.5, I have used that code base.  Eventually these patches will appear in the Ubuntu package manager, but until then, these will do.  The extension indicates whether the binary is for 32-bit, or 64-bit *nix.</p>
<p><code>tinyproxy</code> &#8211; This is the TinyProxy start file (usually found in <code>/etc/init.d</code>), which contains a couple of changed lines.  The permission on the <code>tinyproxy.log</code> files is by default set to restrictive.  It needs to be read by the webserver&#8217;s user, which means that setting it to 644 everytime we start TinyProxy is required.</p>
<p>The files below need to be put in your TinyProxy configuration directory, usually <code>/etc/tinyproxy</code>.</p>
<p><code>tinyproxy.conf</code> &#8211; This contains only the required changes to your distribution&#8217;s version.  The <em>ErrorFile</em>, <em>PidFile</em> and <em>Filter</em> locations need to match your installation, and to switch from blacklisting to whitelisting, the <em>FilterDefaultDeny</em> parameter needs to be set to Yes.</p>
<p><code>whitelist</code> &#8211; This contains just a single line; <code>localhost</code>.  You need to whitelist the domain that your webserver runs on, otherwise it won&#8217;t work.  If your local webserver can be reached through a proper domain name, then change <code>localhost</code> to that instead.</p>
<p><code>403.html</code> &#8211; This is the file referred to by the <em>ErrorFile</em> directive in the <code>tinyproxy.conf</code> file.  It contains two variables which need to be changed to match your system.</p>
<p>The following files are part of the administration interface and will need to be put in a directory that can be served by your local webserver.  For instance, if your webserver uses <code>/var/www</code> as the root directory, put these in a new directory called <code>/var/www/tinyproxy</code>.  The pages should then be able to be accessible by navigating to the <a href="#" class="liinternal">http://your.webserver.domain/tinyproxy</a> url.</p>
<p><code>config.php</code> &#8211; This is the configuration for the administration interface.  Make sure that the variables match your configuration, and if you want it to notify you by <a href="http://twitter.com/" target="_blank" class="liexternal">Twitter</a> each time a new domain approval request is made, enter your details in there too.</p>
<p><code>style.css</code><br />
<code>filter.html</code><br />
<code>admin.html</code><br />
<code>filter.php</code><br />
<code>img</code> (dir) &#8211; These are the remaining files which do not require any modification.</p>
<p><strong>How it all works</strong></p>
<p>Whenever a client is requesting a webpage from a domain, the request is done through TinyProxy.  If it finds a line in the <code>whitelist</code> file for the domain, it lets the request pass through, but if it doesn&#8217;t, an <a href="http://en.wikipedia.org/wiki/HTTP_403" target="_blank" class="liexternal">error 403</a> occurs (Forbidden) and the <code>403.html</code> page is served to the client.  The included <code>403.html</code> file calls the <code>filter.html</code> file internally and passes it the website that the client is trying to access.</p>
<p><img class="aligncenter size-full wp-image-461" title="tinyproxy-filter" src="/wp-content/uploads/2009/11/tinyproxy-filter.png" alt="tinyproxy-filter" width="527" height="348" /></p>
<p>When the request is made, the domain gets added to the <code>whitelist</code> file, but with a prefix of <strong>M|</strong>, therefore still not matching a proper whitelisted domain name.  And it is this mechanism which allows me to approve or deny domains whilst keeping the whitelists all in one place.  The admin interface simply drops the <strong>M|</strong> prefix if the domain gets approved, or changes it to <strong>D|</strong> if it remains denied.  Easy peasy :o)<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
I appreciate that the above is all a bit long and winded, so I&#8217;ll do a small summary/checklist below for those who are keen to get going.</p>
<blockquote><ul>
<li>Install TinyProxy using package manager</li>
<li>Install webserver</li>
<li>Confirm the above are working</li>
<li>Download tinyproxy-admin.tar.gz</li>
<li>Amend config.php</li>
<li>Move config.php, style.css, filter.html, admin.html, filter.php and the img directory to a subdirectory beneath your webserver</li>
<li>Amend TinyProxy startup script: tinyproxy</li>
<li>Amend TinyProxy configuration file: tinyproxy.conf</li>
<li>Amend whitelist and move it to the TinyProxy configuration directory</li>
<li>Amend 403.html and move it to the TinyProxy configuration directory</li>
<li>Replace tinyproxy binary with patched version</li>
<li>Restart TinyProxy</li>
<li>Breath out ;o)</li>
</ul>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/wont-someone-think-of-the-children/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Bye Bye Standby double wall switch</title>
		<link>http://awooga.nl/bye-bye-standby-double-wall-switch</link>
		<comments>http://awooga.nl/bye-bye-standby-double-wall-switch#comments</comments>
		<pubDate>Mon, 26 Oct 2009 12:56:15 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[bye bye standby]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[home easy]]></category>
		<category><![CDATA[modding]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=423</guid>
		<description><![CDATA[I&#8217;m a big fan of Bye Bye Standby and am slowly replacing all switches and lights with their products. One thing that is sorely missed though, is a double wall switch. The kind that sits at the bottom of your stairs and controls the lights upstairs and downstairs. Home Easy do one, but that protocol [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of <a href="http://www.byebyestandby.co.uk/" target="_blank" class="liexternal">Bye Bye Standby</a> and am slowly replacing all switches and lights with their products.  One thing that is sorely missed though, is a double wall switch.  The kind that sits at the bottom of your stairs and controls the lights upstairs and downstairs.  <a href="http://www.homeeasy.eu/home.php" target="_blank" class="liexternal">Home Easy</a> do one, but that protocol is not compatible.  So I combined the best of both worlds and cobbled one together myself :)<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
<a href="/gallery/modding/bbsb-switch/DSC02694.JPG.html" class="liimagelink"><img src="/g/image/35810-3/DSC02694.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02695.JPG.html" class="liimagelink"><img src="/g/image/35815-3/DSC02695.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02696.JPG.html" class="liimagelink"><img src="/g/image/35819-3/DSC02696.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02697.JPG.html" class="liimagelink"><img src="/g/image/35823-3/DSC02697.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02698.JPG.html" class="liimagelink"><img src="/g/image/35827-3/DSC02698.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02699.JPG.html" class="liimagelink"><img src="/g/image/35831-3/DSC02699.JPG" alt="" /></a></p>
<p>Start by stripping all switches down to their bare PCBs.  The idea is to use the push button switches inside the <a href="http://www.diy.com/diy/jsp/bq/nav.jsp?action=detail&#038;fh_secondid=9686459&#038;fh_view_size=10&#038;fh_eds=%3F&#038;fh_location=%2F%2Fcatalog01%2Fen_GB%2Fcategories%3C{9372015}%2Fcategories%3C{9372042}%2Fcategories%3C{9372189}%2FspecificationsProductType%3Dhome_automation%2FspecificationsSpecificProductType%3Don_off_range&#038;fh_refview=lister&#038;ts=1249160690494&#038;isSearch=false" target="_blank" class="liexternal">Home Easy HE308</a> switch and connect them to the push button switches from the <a href="http://www.uk-automation.co.uk/wall-switch-standby-domia-lite-p-1273.html" target="_blank" class="liexternal">Bye Bye Standby wall switches</a> and then stuff it all in the wall.</p>
<p><a href="/gallery/modding/bbsb-switch/DSC02700.JPG.html" class="liimagelink"><img src="/g/image/35835-3/DSC02700.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02702.JPG.html" class="liimagelink"><img src="/g/image/35843-3/DSC02702.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02703.JPG.html" class="liimagelink"><img src="/g/image/35847-3/DSC02703.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02704.JPG.html" class="liimagelink"><img src="/g/image/35851-3/DSC02704.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02705.JPG.html" class="liimagelink"><img src="/g/image/35855-3/DSC02705.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02706.JPG.html" class="liimagelink"><img src="/g/image/35859-3/DSC02706.JPG" alt="" /></a></p>
<p>Carefully solder wires to each BBSB switch and then solder them to the HE308.  As the PCB of the HE308 connects some of the pins, it wouldn&#8217;t work when I tested it.  No problem though, it just meant that I had to get my faithful Dremel out and dremel away all PCB lines surrounding the switches.</p>
<p><a href="/gallery/modding/bbsb-switch/DSC02707.JPG.html" class="liimagelink"><img src="/g/image/35864-5/DSC02707.JPG" alt="" class="aligncenter" /></a></p>
<p>Make sure you test it once it&#8217;s all been connected up, not just when you&#8217;re finished putting it back into your wall ;)  At this point in time, make sure you have set the address codes to the correct modules.</p>
<p><a href="/gallery/modding/bbsb-switch/DSC02711.JPG.html" class="liimagelink"><img src="/g/image/35879-3/DSC02711.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02712.JPG.html" class="liimagelink"><img src="/g/image/35883-3/DSC02712.JPG" alt="" /></a> <a href="/gallery/modding/bbsb-switch/DSC02714.JPG.html" class="liimagelink"><img src="/g/image/35891-3/DSC02714.JPG" alt="" /></a></p>
<p>As the whole package is larger than my backbox, I removed the bottom from a plastic backbox and used a hammer and old screwdriver to chisel away at the wall behind it.  Once I had everything inside and made sure that it was still working, I discovered that the edges from the backbox were larger than the switch itself.  Doh!</p>
<p>I took everything out again and carefully reduced the edging until it all fitted neatly underneath the switch.</p>
<p><a href="/gallery/modding/bbsb-switch/DSC02716.JPG.html" class="liimagelink"><img src="/g/image/35900-5/DSC02716.JPG" alt="" class="aligncenter" /></a><br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
For those who are worried about the batteries, they are no more difficult to replace than a normal BBSB switch.  I would replace both at the same time though if you have to :)</p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/bye-bye-standby-double-wall-switch/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Mul-tea Charger</title>
		<link>http://awooga.nl/the-mul-tea-charger</link>
		<comments>http://awooga.nl/the-mul-tea-charger#comments</comments>
		<pubDate>Sun, 04 Oct 2009 19:15:23 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[chargers]]></category>
		<category><![CDATA[crafts]]></category>
		<category><![CDATA[electricity]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[hub]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[modding]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[sony ericsson]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[W880i]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=413</guid>
		<description><![CDATA[Who doesn&#8217;t have a multitude of devices, phones and other gadgets on their desks? I certainly have, and I finally had enough of all the chargers and wallwarts that each item seems to bring with them. With two iPhones almost constantly being charged, and a Nokia phone thrown in for good measure, I needed to [...]]]></description>
			<content:encoded><![CDATA[<p>Who doesn&#8217;t have a multitude of devices, phones and other gadgets on their desks?  I certainly have, and I finally had enough of all the chargers and wallwarts that each item seems to bring with them.  With two iPhones almost constantly being charged, and a Nokia phone thrown in for good measure, I needed to have something flexible enough for those plus any future gadgets.  So, I googled a bit, and found the <a href="http://www.idaptweb.com/UK/idapt/idapt_i3/overview.html" target="_blank" class="liexternal">IDAPT I3</a>, and the beautiful, but ridiculously priced <a href="http://www.pedlars.co.uk/page_1973.html" target="_blank" class="liexternal">The Sanctuary</a>.  And then I started to think, how easy would it be to put a mains powered USB hub inside a box and have several USB charger leads coming out of the box, each charging a different device?<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
And the answer is, very easy :)</p>
<p><a href="/gallery/modding/charger/DSC02612.JPG.html" class="liimagelink"><img src="/g/image/35708-3/DSC02612.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02613.JPG.html" class="liimagelink"><img src="/g/image/35713-3/DSC02613.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02614.JPG.html" class="liimagelink"><img src="/g/image/35717-3/DSC02614.JPG" alt="" /></a></p>
<p>I started off with a 4 port powered USB hub, which I had lying in a drawer and plugged my iPhone charger leads into it, expecting them to instantly charge my two iPhones.  But to my surpise, nothing happened&#8230;  so another quick Google later, I came accross a blog entry of <a href="http://carlhutzler.com/blog/2009/07/28/usb-hub-as-an-ipodiphone-charger/" target="_blank" class="liexternal">Carl Hutzler</a>, which details why they won&#8217;t charge.  All you have to do is sacrifice the hub and forego it&#8217;s PC functionality by cutting the D+/- lines and short them.  A quick test shows they now finally charge themselves.  Apparently it is better to stick 2x 100K Ohm resistors on the D+/- lines, which I will do at some point, but for now, this will do.</p>
<p><a href="/gallery/modding/charger/DSC02616.JPG.html" class="liimagelink"><img src="/g/image/35721-3/DSC02616.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02617.JPG.html" class="liimagelink"><img src="/g/image/35725-3/DSC02617.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02618.JPG.html" class="liimagelink"><img src="/g/image/35734-3/DSC02618.JPG" alt="" /></a></p>
<p>All I now had to do was find a suitable SWMBO friendly container, and as our furniture is all beech, the tea storage container I found for £1.99 at <a href="http://www.qdstores.co.uk/" target="_blank" class="liexternal">QD stores</a> was perfect.  I just needed to gut the compartiments out and put something on top of the plastic lid.  At my local crafts store I found a small foam pad for 50p which was nice and soft.  Unfortunately I got my measurements all wrong, so I messed up the black pad, but SWMBO came to the rescue by rummaging through my kids crafts drawers by digging up a piece of brown padding.</p>
<p><a href="/gallery/modding/charger/DSC02619.JPG.html" class="liimagelink"><img src="/g/image/35738-3/DSC02619.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02620.JPG.html" class="liimagelink"><img src="/g/image/35742-3/DSC02620.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02621.JPG.html" class="liimagelink"><img src="/g/image/35746-3/DSC02621.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02622.JPG.html" class="liimagelink"><img src="/g/image/35750-3/DSC02622.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02623.JPG.html" class="liimagelink"><img src="/g/image/35759-3/DSC02623.JPG" alt="" /></a></p>
<p>The final thing to do is then drill some holes at the locations convenient for your devices, and put it all together.  Job done!</p>
<p><a href="/gallery/modding/charger/DSC02624.JPG.html" class="liimagelink"><img src="/g/image/35763-3/DSC02624.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02625.JPG.html" class="liimagelink"><img src="/g/image/35767-3/DSC02625.JPG" alt="" /></a> <a href="/gallery/modding/charger/DSC02626.JPG.html" class="liimagelink"><img src="/g/image/35771-3/DSC02626.JPG" alt="" /></a><br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /></p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/the-mul-tea-charger/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The secret of comedy is</title>
		<link>http://awooga.nl/the-secret-of-comedy-is</link>
		<comments>http://awooga.nl/the-secret-of-comedy-is#comments</comments>
		<pubDate>Fri, 07 Aug 2009 11:34:16 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=408</guid>
		<description><![CDATA[&#8230; timing. Happy 12:34:56 07/08/09 :D]]></description>
			<content:encoded><![CDATA[<p>&#8230; timing.</p>
<p>Happy 12:34:56 07/08/09 :D</p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/the-secret-of-comedy-is/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Apple a day</title>
		<link>http://awooga.nl/an-apple-a-day</link>
		<comments>http://awooga.nl/an-apple-a-day#comments</comments>
		<pubDate>Thu, 28 May 2009 14:16:22 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[macboook]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=404</guid>
		<description><![CDATA[It&#8217;s been 4 long years since I last bought an Apple. But today I took delivery of a nice shiny Macbook Unibody \o/ Glad to be back again Update 11.06.2009 Just typical&#8230; 11 days after I received mine, Apple announces the new 13&#8243; Macbook Pro&#8217;s at the Worldwide Developers Conference&#8230; I phone the Apple Store [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been <a href="/think-different" class="liinternal">4 long years</a> since I last bought an Apple.  But today I took delivery of a nice shiny <a href="http://www.apple.com/uk/macbook/" target="_blank" class="liexternal">Macbook Unibody</a> \o/</p>
<p>Glad to be back again</p>
<blockquote><p><strong>Update 11.06.2009</strong></p>
<p>Just typical&#8230;  11 days after I received mine, Apple announces the new <a href="http://www.apple.com/uk/macbookpro/" target="_blank" class="liexternal">13&#8243; Macbook Pro&#8217;s</a> at the <a href="http://developer.apple.com/WWDC/" target="_blank" class="liexternal">Worldwide Developers Conference</a>&#8230;  I phone the <a href="http://store.apple.com/uk" target="_blank" class="liexternal">Apple Store</a> the next day to see if I can exchange it for one only to be told that I would have to return and re-order.  So I did.  Only to receive a new Macbook Pro today on my old order, whilst my new order is now in &#8216;Prepared for Shipping&#8217;, which means I can&#8217;t cancel it!</p>
<p>Guess I&#8217;ll be keeping the courier in business this month ;)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/an-apple-a-day/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Eee PC Digital Picture Frame</title>
		<link>http://awooga.nl/the-eee-pc-digital-picture-frame</link>
		<comments>http://awooga.nl/the-eee-pc-digital-picture-frame#comments</comments>
		<pubDate>Mon, 13 Apr 2009 19:53:59 +0000</pubDate>
		<dc:creator>Q</dc:creator>
				<category><![CDATA[blog]]></category>
		<category><![CDATA[asus]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[eee pc]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[ibex]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[lcd]]></category>
		<category><![CDATA[led]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[maplin]]></category>
		<category><![CDATA[mini 9]]></category>
		<category><![CDATA[modding]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[netbook]]></category>
		<category><![CDATA[photo frame]]></category>
		<category><![CDATA[picture frame]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://awooga.nl/?p=342</guid>
		<description><![CDATA[I just can&#8217;t help myself. It all started way back in 2002 with The Swedish Chef, followed in 2005 by the (still) popular Project Bling: the desire to create the ultimate digital picture frame. So here it is, the third (and hopefully last) instalment: The Eee PC Digital Picture Frame aka The Eee PF. I&#8217;ve [...]]]></description>
			<content:encoded><![CDATA[<p>I just can&#8217;t help myself.  It all started way back in 2002 with <a href="/gallery/modding/chef/" class="liinternal"><em>The Swedish Chef</em></a>, followed in 2005 by the (still) popular <a href="/project-bling" class="liinternal"><em>Project Bling</em></a>: the desire to create the ultimate digital picture frame.</p>
<p>So here it is, the third (and hopefully last) instalment: <strong>The Eee PC Digital Picture Frame</strong> aka <strong>The Eee PF</strong>.</p>
<p>I&#8217;ve divided it up in four sections, for easy digesting ;)  All pictures can be enlarged, and the complete set of pictures can be found in <a href="/gallery/modding/eeepc" class="liinternal">the gallery</a>.</p>
<p><a href="#eeepf-part1" class="liinternal">Part 1: Disassembling the Eee PC</a><br />
<a href="#eeepf-part2" class="liinternal">Part 2: Mounting the LCD</a><br />
<a href="#eeepf-part3" class="liinternal">Part 3: Building the frame</a><br />
<a href="#eeepf-part4" class="liinternal">Part 4: Finishing touches</a><br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
<strong><a name="eeepf-part1">Part 1</a>: Disassembling the Eee PC</strong></p>
<p>It starts off with an <a href="http://eeepc.asus.com/uk/product700.html" target="_blank" class="liexternal">Asus Eee PC 701 2G</a>, which is perfectly small, yet cheap enough to destroy in the name of science.</p>
<p><a href="/gallery/modding/eeepc/DSC01747.JPG.html" class="liimagelink"><img src="/g/image/35363-5/DSC01747.JPG" alt="Asus Eee PC 701 2G" class="aligncenter" /></a></p>
<p>Push the three tabs at the top of the keyboard in and lift the keyboard up to reveal the keyboard connector at the bottom of the keyboard. Using a small flat screwdriver, push the two locks open and remove the keyboard completely.  Next to the keyboard connector is the touchpad connector which should be disconnected as well.</p>
<p><a href="/gallery/modding/eeepc/DSC01748.JPG.html" class="liimagelink"><img src="/g/image/35369-3/DSC01748.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01749.JPG.html" class="liimagelink"><img src="/g/image/35373-3/DSC01749.JPG" alt="" /></a></p>
<p>With the keyboard removed, the bottom half of the case is next. Remove the nine screws as indicated in the pictures. Turn the Eee PC over and remove the six remaining screws.  For good measure, also remove the battery by sliding the two latches outwards, and slide the battery out.  Flip the Mini over again and open the lid again.  Using a plastic wedge (or your finger nails if you have them), pry the case open using some gentle force along the sides. Be patient at this point as the plastic latches inside the case, are fragile and will snap if you exercise too much force.</p>
<p><a href="/gallery/modding/eeepc/DSC01750.JPG.html" class="liimagelink"><img src="/g/image/35377-3/DSC01750.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01751.JPG.html" class="liimagelink"><img src="/g/image/35381-3/DSC01751.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01752.JPG.html" class="liimagelink"><img src="/g/image/35385-3/DSC01752.JPG" alt="" /></a></p>
<p>Now we just need to remove the motherboard.  Disconnect the speaker and display connectors.  There are two latches holding it in place, located at the bottom edge of the PCB.  Lift the motherboard up at the right hand side and then pull it out up and sideways.</p>
<p><a href="/gallery/modding/eeepc/DSC01753.JPG.html" class="liimagelink"><img src="/g/image/35389-3/DSC01753.JPG" alt="" /></a></p>
<p>Time to separate the LCD from the bezel.  Six screws are hidden underneath the plastic covers which are stickied in place.  Use a plastic wedge along the side of the bezel but be very careful, it is very fragile.  Take your time and be gentle.  Just four screws and four sticky metal tape strips to remove before you can lift the LCD clean out.</p>
<p><a href="/gallery/modding/eeepc/DSC01754.JPG.html" class="liimagelink"><img src="/g/image/35393-3/DSC01754.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01755.JPG.html" class="liimagelink"><img src="/g/image/35397-3/DSC01755.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01756.JPG.html" class="liimagelink"><img src="/g/image/35401-3/DSC01756.JPG" alt="" /></a></p>
<p>Voilà, the Eee PC naked!  Now we are ready for some serious modding ;)</p>
<p><a href="/gallery/modding/eeepc/DSC01757.JPG.html" class="liimagelink"><img src="/g/image/35404-5/DSC01757.JPG" alt="The Eee PC dissected" class="aligncenter" /></a><br />
&nbsp;</p>
<p><strong><a name="eeepf-part2">Part 2</a>: Mounting the LCD</strong></p>
<p>Whatever you do, make sure you buy a frame and mount which have a high <a href="http://en.wikipedia.org/wiki/Woman_acceptance_factor" target="_blank" class="liexternal">WAF</a> since it needs to live in the living room.  You don&#8217;t want to find yourself building something like this and then <a href="http://en.wikipedia.org/wiki/SWMBO" target="_blank" class="liexternal">SWMBO</a> tossing it in the bin because is clashes with the design ;)  Take the mount and measure the dimensions of the LCD and frame and carefully cut it to size.  As usual; measure twice, cut once :)</p>
<p><a href="/gallery/modding/eeepc/DSC01758.JPG.html" class="liimagelink"><img src="/g/image/35409-3/DSC01758.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01759.JPG.html" class="liimagelink"><img src="/g/image/35413-3/DSC01759.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01760.JPG.html" class="liimagelink"><img src="/g/image/35417-3/DSC01760.JPG" alt="" /></a></p>
<p>The LCD driver board sits neatly underneath the LCD, but when you mount the display into the frame, it doesn&#8217;t fit.  Cutting away a bit of the frame allows it to be sunken into it and sit flush with the frame.  Some double sided tape holds the mount in place.</p>
<p><a href="/gallery/modding/eeepc/DSC01761.JPG.html" class="liimagelink"><img src="/g/image/35421-3/DSC01761.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01762.JPG.html" class="liimagelink"><img src="/g/image/35425-3/DSC01762.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01763.JPG.html" class="liimagelink"><img src="/g/image/35429-3/DSC01763.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01764.JPG.html" class="liimagelink"><img src="/g/image/35433-3/DSC01764.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01765.JPG.html" class="liimagelink"><img src="/g/image/35437-3/DSC01765.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01769.JPG.html" class="liimagelink"><img src="/g/image/35441-3/DSC01769.JPG" alt="" /></a></p>
<p>On to the motherboard.  This needs to be mounted with enough clearance above the LCD so that heat can escape and to do this I made my own spacers using normal <a href="http://cpc.farnell.com/_/sticky-feet-small/pcb-spacers-small-self-adhesive/dp/SR00039" target="_blank" class="liexternal">motherboard spacers</a> which I had plenty of from my PC building days.  The screw holes on the Eee PC are tiny, so cut away at the top of the spacers to make them small enough to fit.  Looks rather neat, eh?</p>
<p><a href="/gallery/modding/eeepc/DSC01775.JPG.html" class="liimagelink"><img src="/g/image/35445-3/DSC01775.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01776.JPG.html" class="liimagelink"><img src="/g/image/35449-3/DSC01776.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01777.JPG.html" class="liimagelink"><img src="/g/image/35453-3/DSC01777.JPG" alt="" /></a></p>
<p><a href="/gallery/modding/eeepc/DSC01778.JPG.html" class="liimagelink"><img src="/g/image/35456-5/DSC01778.JPG" alt="The Eee PC mounted" class="aligncenter" /></a><br />
&nbsp;</p>
<p><strong><a name="eeepf-part3">Part 3</a>: Building the frame</strong></p>
<p>Before we create the frame, we need to think about an alternative heat sink.  Normally, the bottom of the keyboard would dissipate the heat, so after doing some testing, I settled on an <a href="http://www.akasa.co.uk/akasa_english/spec_page/system_coolers/spec_ak_vcx_01.htm" target="_blank" class="liexternal">Akasa Southbridge cooler</a> and some tiny <a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=30377" target="_blank" class="liexternal">Maplin heat sinks</a>.  Tests showed that the temps remained nicely around the 50ºC mark, which will rise to about 65ºC once the back cover will be on.  Well within the limits :)</p>
<p><a href="/gallery/modding/eeepc/DSC01781.JPG.html" class="liimagelink"><img src="/g/image/35469-3/DSC01781.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01782.JPG.html" class="liimagelink"><img src="/g/image/35500-3/DSC01782.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01784.JPG.html" class="liimagelink"><img src="/g/image/35508-3/DSC01784.JPG" alt="" /></a></p>
<p>Using some <a href="http://www.wickes.co.uk/Stripwood/Pine-Stripwood/invt/128537" target="_blank" class="liexternal">4mm Pine Stripwood</a> cut to length, mark out all the ports and crevices that need to be carefully removed from the frame to allow access once everything is closed up again.</p>
<p><a href="/gallery/modding/eeepc/DSC01779.JPG.html" class="liimagelink"><img src="/g/image/35461-3/DSC01779.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01780.JPG.html" class="liimagelink"><img src="/g/image/35465-3/DSC01780.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01785.JPG.html" class="liimagelink"><img src="/g/image/35512-3/DSC01785.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01801.JPG.html" class="liimagelink"><img src="/g/image/35524-3/DSC01801.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01783.JPG.html" class="liimagelink"><img src="/g/image/35504-3/DSC01783.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01802.JPG.html" class="liimagelink"><img src="/g/image/35528-3/DSC01802.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01800.JPG.html" class="liimagelink"><img src="/g/image/35520-3/DSC01800.JPG" alt="" /></a></p>
<p>Here&#8217;s a quick mock up of how it all will fit together once we&#8217;ve painted the frame and glued it to the photo frame&#8217;s back.</p>
<p><a href="/gallery/modding/eeepc/DSC01799.JPG.html" class="liimagelink"><img src="/g/image/35515-5/DSC01799.JPG" alt="The Eee PC framed" class="aligncenter" /></a></p>
<p>Because the power switch would be covered up when the back is glued on, we need to move the switch&#8217;s function to somewhere more convenient.  Reading <a href="http://infsq.co.uk/2008/04/19/taking-apart-an-asus-eee-pc-remote-onoff/" target="_blank" class="liexternal">this blog post</a> over at Infinity Squared on an external power switch, I decided to go for <a href="http://www.maplin.co.uk/Module.aspx?ModuleNo=2492" target="_blank" class="liexternal">the smallest</a> I could find at Maplin.  My soldering is definitely not the best, so a bit of heat shrink camouflages most of it ;)</p>
<p><a href="/gallery/modding/eeepc/DSC01803.JPG.html" class="liimagelink"><img src="/g/image/35532-3/DSC01803.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01804.JPG.html" class="liimagelink"><img src="/g/image/35536-3/DSC01804.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01805.JPG.html" class="liimagelink"><img src="/g/image/35540-3/DSC01805.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01903.JPG.html" class="liimagelink"><img src="/g/image/35580-3/DSC01903.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01904.JPG.html" class="liimagelink"><img src="/g/image/35584-3/DSC01904.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01905.JPG.html" class="liimagelink"><img src="/g/image/35588-3/DSC01905.JPG" alt="" /></a></p>
<p>I also wanted to have some sort of visual indication that the frame is on or off (other than the tell-tale display ;)).  But how to get the minuscule surface mounted LEDs displayed through the frame?  I had seen something previously, where light was transported using a small transparent acrylic tube.  And when I was killing some time wandering around my local Tesco, I found my 48p answer&#8230;  translucent golf markers!  Remove the heads, drill a few holes and <a href="http://en.wikipedia.org/wiki/Bob%27s_your_uncle" target="_blank" class="liexternal">Bob is a relative</a>.</p>
<p><a href="/gallery/modding/eeepc/DSC01806.JPG.html" class="liimagelink"><img src="/g/image/35544-3/DSC01806.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01807.JPG.html" class="liimagelink"><img src="/g/image/35548-3/DSC01807.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01808.JPG.html" class="liimagelink"><img src="/g/image/35552-3/DSC01808.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01809.JPG.html" class="liimagelink"><img src="/g/image/35556-3/DSC01809.JPG" alt="" /></a></p>
<p>Almost there.  Using some left over black paint, paint all the sides and make sure that once assembled, all the small blemishes are hidden.  Well, most of them ;)</p>
<p><a href="/gallery/modding/eeepc/DSC01810.JPG.html" class="liimagelink"><img src="/g/image/35560-3/DSC01810.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01908.JPG.html" class="liimagelink"><img src="/g/image/35599-3/DSC01908.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01907.JPG.html" class="liimagelink"><img src="/g/image/35595-3/DSC01907.JPG" alt="" /></a></p>
<p>Ready for assembly!  Some glue, some patience and some skilful balancing of weighty items on top of the corners and all that is left to do is add the back cover.</p>
<p><a href="/gallery/modding/eeepc/DSC01909.JPG.html" class="liimagelink"><img src="/g/image/35602-5/DSC01909.JPG" alt="The Eee PF framed and painted" class="aligncenter" /></a><br />
&nbsp;</p>
<p><strong><a name="eeepf-part4">Part 4</a>: Finishing touches</strong></p>
<p>A sheet of hardboard has been cut to be the approximate size and then using patience and lots of sanding made to fit exactly.  The space at the bottom of the frame is perfect for the speakers, so using a small drill, create lots of small holes where the sound can penetrate through.  It won&#8217;t be high fidelity, but it&#8217;s good enough for announcements.  At the top of the frame, the microphone has been mounted, so we may be able to support voice commands in the future!  A quick lick of paint finishes it off.</p>
<p><a href="/gallery/modding/eeepc/DSC01921.JPG.html" class="liimagelink"><img src="/g/image/35609-3/DSC01921.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01922.JPG.html" class="liimagelink"><img src="/g/image/35613-3/DSC01922.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01923.JPG.html" class="liimagelink"><img src="/g/image/35617-3/DSC01923.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01924.JPG.html" class="liimagelink"><img src="/g/image/35621-3/DSC01924.JPG" alt="" /></a><a href="/gallery/modding/eeepc/DSC01925.JPG.html" class="liimagelink"><img src="/g/image/35625-3/DSC01925.JPG" alt="" /></a></p>
<p>We&#8217;re re-using the stand from the picture frame, but instead of hammering it in the backboard, we have to glue it.  I&#8217;ve used <a href="http://en.wikipedia.org/wiki/Araldite" target="_blank" class="liexternal">Araldite</a>, which should create a long lasting strong bond.</p>
<p><a href="/gallery/modding/eeepc/DSC01926.JPG.html" class="liimagelink"><img src="/g/image/35629-3/DSC01926.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01927.JPG.html" class="liimagelink"><img src="/g/image/35633-3/DSC01927.JPG" alt="" /></a></p>
<p>And that is it!  I&#8217;m quite pleased with the result, and even SWMBO commented on how nicely it looks in the living room&#8230;  result!</p>
<p><a href="/gallery/modding/eeepc/DSC01930.JPG.html" class="liimagelink"><img src="/g/image/35646-5/DSC01930.JPG" alt="The Eee PF finished" class="aligncenter" /></a></p>
<p><a href="/gallery/modding/eeepc/DSC01928.JPG.html" class="liimagelink"><img src="/g/image/35637-3/DSC01928.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01931.JPG.html" class="liimagelink"><img src="/g/image/35649-3/DSC01931.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01932.JPG.html" class="liimagelink"><img src="/g/image/35653-3/DSC01932.JPG" alt="" /></a> <a href="/gallery/modding/eeepc/DSC01934.JPG.html" class="liimagelink"><img src="/g/image/35657-3/DSC01934.JPG" alt="" /></a></p>
<p>As a final note, I haven&#8217;t mentioned at all what software the frame is running, so before you bombard me with questions, I better list them here ;)<br />
<br /><br /><center><script type="text/javascript"><!--
google_ad_client = "pub-3248212177098373";
google_ad_slot = "3039514391";
google_ad_width = 468;
google_ad_height = 60;
//--></script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
</center><br /><br />
The OS is a standard <a href="http://www.ubuntu.com/" target="_blank" class="liexternal">Ubuntu 8.10 Desktop</a>, with <a href="http://po-ru.com/diary/linux-liposuction-or-xubuntu-in-under-a-gig-on-the-eee-pc/" target="_blank" class="liexternal">/usr compressed with squashfs/unionfs</a> so it can fit on the 2GB SSD.  After booting, it starts <a href="http://www.mozilla-europe.org/en/firefox/" target="_blank" class="liexternal">Firefox</a> on my homepage, a PHP/Ajax/MySQL slideshow script which displays the pictures, weather and clock.  The mousepointer is hidden using a small utility called <a href="http://ubuntu-tutorials.com/2008/07/07/auto-hide-your-mouse-pointer-when-idle-with-unclutter/" target="_blank" class="liexternal">Unclutter</a> and the display is automatically switched off at night using <code>sudo vbetool dpms off</code> and switched on again in the morning using <code>sudo vbetool dpms on</code>.  It&#8217;s still all a bit rough round the edges, but for now it works :)</p>
]]></content:encoded>
			<wfw:commentRss>http://awooga.nl/the-eee-pc-digital-picture-frame/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>

