<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-9168815313850249309</id><updated>2011-12-13T04:49:15.136-08:00</updated><category term='supercollider'/><category term='mlr'/><category term='monome'/><title type='text'>Basement LEDs</title><subtitle type='html'>Documenting the construction of an 8*8 Arduinome</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-2212941918152543611</id><published>2009-05-04T11:18:00.000-07:00</published><updated>2009-05-04T11:36:02.108-07:00</updated><title type='text'>Improve button response: Smush the carbon rings</title><content type='html'>The title sums it up. I just found that I could get much more sensitive button response (and far fewer undetected presses) if I first 'smushed' the carbon rings on the underside of the keypads against the circular flower-like traces that they sit above. I'm not sure exactly why it works, but it's helped quite dramatically.&lt;br /&gt;&lt;br /&gt;&lt;p style="width:100%"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_2VS9J0nR3oE/Sf80zRse78I/AAAAAAAAAHw/R7lEJEP1cdM/s1600-h/buttontwist.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_2VS9J0nR3oE/Sf80zRse78I/AAAAAAAAAHw/R7lEJEP1cdM/s320/buttontwist.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5332038539357908930" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;I removed the outer-most top plate so I could grip the buttons properly, then simultaneously pressed and twisted each one left and right, rubbing the carbon ring against the pcb.&lt;br /&gt;&lt;br /&gt;If you're getting a lot of missed button presses with your arduinome give it a try.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-2212941918152543611?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/2212941918152543611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=2212941918152543611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2212941918152543611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2212941918152543611'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2009/05/improve-button-response-smush-carbon.html' title='Improve button response: Smush the carbon rings'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_2VS9J0nR3oE/Sf80zRse78I/AAAAAAAAAHw/R7lEJEP1cdM/s72-c/buttontwist.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1698728357720013422</id><published>2008-10-17T06:24:00.000-07:00</published><updated>2008-10-17T07:48:31.450-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='supercollider'/><category scheme='http://www.blogger.com/atom/ns#' term='monome'/><category scheme='http://www.blogger.com/atom/ns#' term='mlr'/><title type='text'>Donate a name</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2949482264/" title="Supercollider by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3275/2949482264_a16646d1a2_m.jpg" width="240" height="180" alt="Supercollider" /&gt;&lt;/a&gt;&lt;br /&gt;Work on the mlr-ish SuperCollider app is going well. Mute groups are working correctly and now I'm starting to implement pattern recording. With the help of people on the sc-users mailinglist I've been able to get unit tests working, which speeds up the whole bug-catching and fixing cycle.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2948627837/" title="Supercollider by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3176/2948627837_b8c48c550c_m.jpg" width="240" height="180" alt="Supercollider" /&gt;&lt;/a&gt;&lt;br /&gt;It would be handy to have a name for this clone already. I like the idea of naming it after an animal but didn't find anything suitable yet. All suggestions are welcome!&lt;br /&gt;&lt;br /&gt;As soon as I have a version that does pattern recording, and preset saving/loading, I'll publish the code so if anyone else wants to extend it in their own way, it should be possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1698728357720013422?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1698728357720013422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1698728357720013422' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1698728357720013422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1698728357720013422'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/10/donate-name.html' title='Donate a name'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3275/2949482264_a16646d1a2_t.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1003967910711376218</id><published>2008-10-01T09:33:00.000-07:00</published><updated>2008-10-01T09:35:07.157-07:00</updated><title type='text'>Monome clone running mlr clone</title><content type='html'>&lt;object width="400" height="302"&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="allowscriptaccess" value="always" /&gt; &lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1858209&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt; &lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1858209&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1858209?pg=embed&amp;amp;sec=1858209"&gt;An mlr Clone Running on a Monome Clone&lt;/a&gt; from &lt;a href="http://vimeo.com/user458978?pg=embed&amp;amp;sec=1858209"&gt;basementhum&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;amp;sec=1858209"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here's a short clip showing a test of the Arduinome using an early version of the mlr-ish application i'm writing in SuperCollider.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1003967910711376218?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1003967910711376218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1003967910711376218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1003967910711376218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1003967910711376218'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/10/monome-clone-running-mlr-clone.html' title='Monome clone running mlr clone'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3602375348762377008</id><published>2008-09-26T13:49:00.000-07:00</published><updated>2008-09-26T14:19:57.581-07:00</updated><title type='text'>Arduinome lives!</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2890082267/" title="Arduinome by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3208/2890082267_27d2d47220_m.jpg" width="240" height="180" alt="Arduinome" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;All done! xndr brought by a thicker faceplate earlier today. This means that the buttons dont stick up so far as they did before, and have a clearer, less wobbly action now.&lt;br /&gt;&lt;br /&gt;The sticking buttons are fixed too (I think); through a combination of snipping away some excess parts of silicone to stop it bunching up around the screw holes, loosening the nuts that fasten the buttons to the inner faceplate, and careful positioning of the outer faceplate to maximise the gap round each button. If you look at the large version of the following photo, you can see where the silicone has been snipped away:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2890081053/" title="Arduinome by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3117/2890081053_6859299f63_m.jpg" width="240" height="180" alt="Arduinome" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can find some more photos of the box in different states at my &lt;a href="http://flickr.com/photos/54829881@N00/"&gt;flickr photostream&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There are a few things I wish I'd known about earlier, here are a couple of the things I can remember:&lt;br /&gt;&lt;br /&gt;1. Solid core wire is good for breadboarding, but multicore wire would have been better for the 'real thing', since it's more flexible (easier to squash down, and out of the way) and less liable to snap. Wires snapped at solder points about ten times over the course of building this box, I came to dread opening it in case another one would break.&lt;br /&gt;&lt;br /&gt;2. If you're thinking of using a Machinecollective enclosure, try to get hold of one before you start soldering, that way you'll be able to cut the wire to appropriate lengths for easier assembly.&lt;br /&gt;&lt;br /&gt;3. The project will potentially take many hours to complete. I didn't keep a log of how long i spent on this, but its certainly much longer than I expected.&lt;br /&gt;&lt;br /&gt;A huge thanks to Monome, for enabling people to create this kind of clone, and to everyone who's contributed their time and expertise to the Arduinome project.&lt;br /&gt;&lt;br /&gt;Next: I'm busy building a mlr-inspired application in SuperCollider, to use with the Arduinome. I'll post a demo, and code samples here when there's something interesting to see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3602375348762377008?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3602375348762377008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3602375348762377008' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3602375348762377008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3602375348762377008'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/09/arduinome-lives.html' title='Arduinome lives!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3208/2890082267_27d2d47220_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1827108014588312498</id><published>2008-09-12T02:01:00.001-07:00</published><updated>2008-09-12T02:28:05.887-07:00</updated><title type='text'>Button Action</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2745619185/" title="Machinecollective Enclosure: Version 2 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3112/2745619185_578a5b400f_m.jpg" width="240" height="180" alt="Machinecollective Enclosure: Version 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The new metal spacers arrived and I put the &lt;a href="http://news.machinecollective.org/"&gt;machinecollectve&lt;/a&gt; casing together. The box is looking great and feels sturdy generally. There are two things that i'm still hoping to fix:&lt;br /&gt;&lt;br /&gt;1. Some of the buttons are sticking. When they're pressed they sometimes don't pop back up of their own accord.&lt;br /&gt;&lt;br /&gt;2. Because the &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7835"&gt;sparkfun&lt;/a&gt; buttons extend quite high above the faceplate, they often have some lateral 'wobble' when pressed. I'd like to experiment with using two stacked faceplates to steady this and get a cleaner, 'downwards only' press action.&lt;br /&gt;&lt;br /&gt;A sidenote: I'd been putting the enclosure together the hard way all this time! Looking at Xndrs photos i noticed that he builds them from the &lt;a href="http://pics.machinecollective.org/arduinome_enclosure/07-step1.jpg"&gt;faceplate down&lt;/a&gt;, instead of trying to screw things onto the bottom panel and working upwards. This makes things much easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1827108014588312498?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1827108014588312498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1827108014588312498' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1827108014588312498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1827108014588312498'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/09/buttons.html' title='Button Action'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3112/2745619185_578a5b400f_t.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-5278697966593860728</id><published>2008-08-09T02:20:00.000-07:00</published><updated>2008-08-09T02:45:03.421-07:00</updated><title type='text'>MachineCollective Enclosure, version 2</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2746455298/" title="Machinecollective Enclosure: Version 2 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3127/2746455298_59144d418d_m.jpg" width="240" height="180" alt="Machinecollective Enclosure: Version 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2745618903/" title="Machinecollective Enclosure: Version 2 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3011/2745618903_bfbab74243_m.jpg" width="240" height="180" alt="Machinecollective Enclosure: Version 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2745618565/" title="Machinecollective Enclosure: Version 2 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3265/2745618565_ddca1e1357_m.jpg" width="240" height="180" alt="Machinecollective Enclosure: Version 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2746455718/" title="Machinecollective Enclosure: Version 2 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3092/2746455718_c143b2e548_m.jpg" width="240" height="180" alt="Machinecollective Enclosure: Version 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.machinecollective.org/"&gt;Xndr&lt;/a&gt; brought over new pieces for the enclosure with modified measurements and new screw holes, here are some more pictures of the enclosure in stages of assembly.&lt;br /&gt;&lt;br /&gt;But I had some problems with the plastic spacers. Because I needed to take the box apart and put it together several times, the threads inside three of the spacers wore out. Perhaps it'll be necessary to use metal ones instead.&lt;br /&gt;&lt;br /&gt;Meanwhile it's great to hear that the more people are busy working on the 'Arduinome' software. As well as a new version of the firmware, a custom app is being developed that will replace MonomeSerial. This app is specifically designed for use with Arduino powered monomes, and we are assured that it will bring important stability and performance improvements. Check &lt;a href="http://bricktable.wordpress.com/30/download-code/"&gt;the announcement on the Bricktable blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also: a big thanks to Thomas Margolf, again I summoned his huge electronics expertise to solve a problem that turned out to have been caused by my forgetting to connect some wires [foreheadslap].&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-5278697966593860728?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/5278697966593860728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=5278697966593860728' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/5278697966593860728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/5278697966593860728'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/08/machinecollective-enclosure-version-2.html' title='MachineCollective Enclosure, version 2'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3127/2746455298_59144d418d_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-7491623175024461509</id><published>2008-07-25T05:34:00.000-07:00</published><updated>2008-07-25T06:42:42.103-07:00</updated><title type='text'>MachineCollective Enclosure</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2700003170/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3232/2700003170_d4bce07317_m.jpg" width="240" height="167" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Xndr from &lt;a href="http://machinecollective.org/"&gt;Machine Collective&lt;/a&gt; is supplying a very nice enclosure for the project. (80 EUR). This projects also acts as a kind of beta test for his sparkfun monome enclosure parts.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699187597/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3274/2699187597_ef5e11b1d1_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699187821/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3285/2699187821_5c8bc44b0d_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An ingenious, almost seamless aluminium side panel with nicely rounded corners.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699187911/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3060/2699187911_9271fa41e3_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699188017/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3096/2699188017_0d531ddfcb_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699188315/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3288/2699188315_5c5cac2fac_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699188693/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3115/2699188693_87d69b4e2b_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2699190027/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3100/2699190027_d91571d07b_m.jpg" width="240" height="165" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the inner base panel. Notice that the shield does not sit on the arduino anymore (to keep the height of the unit to a minimum). Instead the two are connected with wires soldered to header pins. The shield is clamped in place by a few cleverly cut pieces of plastic tightened down with screws.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2700004866/" title="MachineCollective enclosure (beta) by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3108/2700004866_65549e95b1_m.jpg" width="240" height="180" alt="MachineCollective enclosure (beta)" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also, It turns out that I needn't have removed the 'break off' part of the shield. Now I have the problem of how to secure this loose piece to the base of the enclosure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-7491623175024461509?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/7491623175024461509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=7491623175024461509' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/7491623175024461509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/7491623175024461509'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/machinecollective-enclosure.html' title='MachineCollective Enclosure'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3232/2700003170_d4bce07317_t.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3249159955326429648</id><published>2008-07-16T01:55:00.000-07:00</published><updated>2008-07-16T01:59:04.509-07:00</updated><title type='text'>Soldering the Shield</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2673960018/" title="Arduino Shield by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3274/2673960018_c4674374c9_m.jpg" width="240" height="156" alt="Arduino Shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2673960086/" title="Arduino Shield by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3106/2673960086_2b39ca1a15_m.jpg" width="240" height="180" alt="Arduino Shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2673140499/" title="Arduino Shield by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3185/2673140499_31bf11df32_m.jpg" width="240" height="180" alt="Arduino Shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2673140563/" title="Arduino Shield by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3253/2673140563_b90b17afc0_m.jpg" width="240" height="169" alt="Arduino Shield" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I used blobs of blue-tac to hold the components with short legs in place while i soldered the first legs (choosing legs that were furthest from where the blue-tac was to avoid it heating up too much). Once the components where secured with solder, I removed the blue-tac and soldered the remaining legs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3249159955326429648?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3249159955326429648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3249159955326429648' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3249159955326429648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3249159955326429648'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/soldering-shield.html' title='Soldering the Shield'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3274/2673960018_c4674374c9_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-190201937286567329</id><published>2008-07-15T10:46:00.000-07:00</published><updated>2008-07-25T07:07:34.009-07:00</updated><title type='text'>Arduino Shield</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2671800210/" title="Custom PCB by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3246/2671800210_9b504e9862_m.jpg" width="240" height="236" alt="Custom PCB" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2671799944/" title="Custom PCB by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3041/2671799944_a2be497ea4_m.jpg" width="240" height="236" alt="Custom PCB" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2670977717/" title="Custom PCB by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3208/2670977717_fbf873f5e9_m.jpg" width="172" height="240" alt="Custom PCB" /&gt;&lt;/a&gt;&lt;br /&gt;Today the Arduino shield PCB arrived. I ordered it as part of a &lt;a href="http://post.monome.org/comments.php?DiscussionID=1735&amp;page=1#Item_18"&gt;group buy&lt;/a&gt; organised through the monome.org forum. &lt;a href="http://www.flickr.com/photos/unsped/2319369764/"&gt;Unsped created this design&lt;/a&gt; for his &lt;a href="http://www.flickr.com/photos/unsped/2353794978/"&gt;Vanome&lt;/a&gt; project.&lt;br /&gt;&lt;br /&gt;In case this isn't making much sense to you: an Arduino shield is a specially designed &lt;acronym title="Printed Circuit Board"&gt;PCB&lt;/acronym&gt; that slots ontop of an &lt;a href="http://en.wikipedia.org/wiki/Arduino"&gt;Arduino&lt;/a&gt; via pins that are aligned with the Arduino's sockets.&lt;br /&gt;&lt;br /&gt;Using a correctly designed PCB means that you don't need to deal with a tangle of wires (the way &lt;a href="http://www.flickr.com/photos/54829881@N00/2615146881/in/set-72157605593268404/"&gt;my breadboard looks&lt;/a&gt; at the moment) because the wiring is translated to neat little copper traces on the surfaces of the board. This means that soldering is easier, that there are fewer joints that can go wrong, and that the whole thing takes up less space and can be housed in a smaller enclosure.&lt;br /&gt;&lt;br /&gt;Eagle is a software for designing PCBs like this one. There's is a &lt;a href="http://www.cadsoftusa.com/freeware.htm"&gt;free version&lt;/a&gt; that can be used to design boards of limited size. There are a &lt;a href="http://myhome.spu.edu/bolding/EE4211/EagleTutorial4.htm"&gt;few&lt;/a&gt; &lt;a href="http://www.sparkfun.com/commerce/present.php?p=BEE-9-EaglePCB"&gt;good tutorials&lt;/a&gt; on line for getting started with Eagle. I used the free version of Eagle to create the schematics that I published in this blog. Schematics created in Eagle can be exported as specially formatted files (Gerber files) that a PCB manufacturing company can use to create small runs of circuit boards for your projects. This board was manufactured by &lt;a href="http://www.4pcb.com/"&gt;4pcb.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Update: I removed the 'break off' strip of this PCB, but with hindsight I shouldn't have!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-190201937286567329?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/190201937286567329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=190201937286567329' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/190201937286567329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/190201937286567329'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/arduino-shield.html' title='Arduino Shield'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3246/2671800210_9b504e9862_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-902590067370387231</id><published>2008-07-14T08:03:00.001-07:00</published><updated>2008-07-14T08:11:51.623-07:00</updated><title type='text'>Schematic for bricktable code</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2668147766/" title="Schematic for bricktable code by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3131/2668147766_652ab94f95_m.jpg" width="240" height="173" alt="Schematic for bricktable code" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After many hours of fiddling, I found a way to wire my breadboard so that it works with the &lt;a href="http://bricktable.wordpress.com/30/download-code/"&gt;bricktable arduino code&lt;/a&gt;. Here's how the wiring looks for the version I have at the moment, which seems to be working correctly with the monometest patch.&lt;br /&gt;&lt;br /&gt;Main changes since last time: the resistors attached to the 165 are now acting as pull-up resistors rather than pull-down ones. The orientation of the PCB matrix has changed, the 'top' is now the the side with the SWITCH, RED, BLUE, GREEN labels. And the 'left' is the side with the labels LED-GND and SWT-GND. Also, the 164 and 165 have 'swapped places' with respect to how they were connected to the PCB matrix.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-902590067370387231?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/902590067370387231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=902590067370387231' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/902590067370387231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/902590067370387231'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/schematic-for-bricktable-code.html' title='Schematic for bricktable code'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3131/2668147766_652ab94f95_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-8691325736803814243</id><published>2008-07-08T02:21:00.000-07:00</published><updated>2008-07-08T03:00:07.448-07:00</updated><title type='text'>Button Press Bug</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2648648783/" title="Button Press Bug by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3042/2648648783_bb10e507c1_m.jpg" width="240" height="180" alt="Button Press Bug" /&gt;&lt;/a&gt;&lt;br /&gt;Here's an illustration of the problem I'm currently having while trying to get my breadboard working with the &lt;a href="http://bricktable.wordpress.com/30/download-code/"&gt;bricktable code&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If no buttons are pressed in a column, the entire column acts as though it is being pressed. When one button is pressed in a column, that button correctly registers as being pressed, and the others in the same column go unpressed. When two buttons in a column are pressed simultaneously, neither is registered as being pressed (the whole column goes unpressed).&lt;br /&gt;&lt;br /&gt;Here's how I currently have the matrix rows and columns wired to the ICs. (NB. I switched to the bricktable coordinates so 0,0 is now the top-left button, it used to be the bottom-left one)&lt;br /&gt;&lt;br /&gt;&lt;table style="margin-top:0px;padding-top:0px;width:250px"&gt;&lt;br /&gt;&lt;tbody style="margin-top:0px;padding-top:0px"&gt;&lt;tr&gt;&lt;th&gt;Matrix Row&lt;/th&gt;&lt;th&gt;MAX pin&lt;/th&gt;&lt;th&gt;164 pin&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r0&lt;/td&gt;&lt;td&gt;DIG 7&lt;/td&gt;&lt;td&gt;Q0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r1&lt;/td&gt;&lt;td&gt;DIG 6&lt;/td&gt;&lt;td&gt;Q1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r2&lt;/td&gt;&lt;td&gt;DIG 5&lt;/td&gt;&lt;td&gt;Q2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r3&lt;/td&gt;&lt;td&gt;DIG 4&lt;/td&gt;&lt;td&gt;Q3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r4&lt;/td&gt;&lt;td&gt;DIG 3&lt;/td&gt;&lt;td&gt;Q4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r5&lt;/td&gt;&lt;td&gt;DIG 2&lt;/td&gt;&lt;td&gt;Q5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r6&lt;/td&gt;&lt;td&gt;DIG 1&lt;/td&gt;&lt;td&gt;Q6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;r7&lt;/td&gt;&lt;td&gt;DIG 0&lt;/td&gt;&lt;td&gt;Q7&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table style="margin-top:0px;padding-top:0px;width:250px"&gt;&lt;br /&gt;&lt;tbody style="margin-top:0px;padding-top:0px"&gt;&lt;tr&gt;&lt;th&gt;Matrix Column&lt;/th&gt;&lt;th&gt;MAX pin&lt;/th&gt;&lt;th&gt;165 pin&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c0&lt;/td&gt;&lt;td&gt;SEG G&lt;/td&gt;&lt;td&gt;D7&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c1&lt;/td&gt;&lt;td&gt;SEG F&lt;/td&gt;&lt;td&gt;D6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c2&lt;/td&gt;&lt;td&gt;SEG E&lt;/td&gt;&lt;td&gt;D5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c3&lt;/td&gt;&lt;td&gt;SEG D&lt;/td&gt;&lt;td&gt;D4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c4&lt;/td&gt;&lt;td&gt;SEG C&lt;/td&gt;&lt;td&gt;D3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c5&lt;/td&gt;&lt;td&gt;SEG B&lt;/td&gt;&lt;td&gt;D2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c6&lt;/td&gt;&lt;td&gt;SEG A&lt;/td&gt;&lt;td&gt;D1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;c7&lt;/td&gt;&lt;td&gt;SEG DP&lt;/td&gt;&lt;td&gt;D0&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-8691325736803814243?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/8691325736803814243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=8691325736803814243' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8691325736803814243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8691325736803814243'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/button-press-bug.html' title='Button Press Bug'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3042/2648648783_bb10e507c1_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-2835081920660897373</id><published>2008-07-06T13:26:00.000-07:00</published><updated>2008-07-06T13:39:18.590-07:00</updated><title type='text'>Progress</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2643575442/" title="Misc monome stuff by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3121/2643575442_59537cd981_m.jpg" width="240" height="180" alt="Misc monome stuff" /&gt;&lt;/a&gt;&lt;br /&gt;The company I bought the LEDs from graciously sent me 70 replacement pieces after i'd explained to them that the previous batch included two different colours.&lt;br /&gt;&lt;br /&gt;Unsoldering the unwanted LEDs was much harder than soldering them in. The sparkfun PCBs are now a battlefield of scorch marks. I added the new lights and they all seem to be working.&lt;br /&gt;&lt;br /&gt;I added capacitors to the breadboard (one for each shift register and two for the MAX chip). Now my breadboard monome is &lt;span style="font-style:italic;"&gt;almost&lt;/span&gt; working when I test it with monomeserial and monometest. I'm using the bricktable arduino code.&lt;br /&gt;&lt;br /&gt;Something's going wrong with the button presses though. It's as though the buttons have been rotated ninety degrees anticlockwise relative to the LED positions. I'm hoping that bricktable guys will publish their schamatics soon which will help clear up this oddness.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-2835081920660897373?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/2835081920660897373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=2835081920660897373' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2835081920660897373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2835081920660897373'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/07/progress.html' title='Progress'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3121/2643575442_59537cd981_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-303030016719618486</id><published>2008-06-30T00:24:00.001-07:00</published><updated>2008-06-30T00:25:50.887-07:00</updated><title type='text'>Orange imposters</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2622705238/" title="Mixed up LED package? by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3020/2622705238_b4d5d66064_m.jpg" width="240" height="180" alt="Mixed up LED package?" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm sure about it now. Seven of the LEDs above are orange. The rest are yellow. I've asked the supplier if I can get a replacemet set of yellow ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-303030016719618486?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/303030016719618486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=303030016719618486' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/303030016719618486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/303030016719618486'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/orange-imposters.html' title='Orange imposters'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3020/2622705238_b4d5d66064_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-6081976593667339377</id><published>2008-06-29T13:09:00.000-07:00</published><updated>2008-09-26T14:38:29.089-07:00</updated><title type='text'>Flashing the EEPROM</title><content type='html'>In order that the &lt;a href="http://monome.org/data/app/monomeserial"&gt;MonomeSerial&lt;/a&gt; software 'sees' the monome clone, it's necessary to change the serial number of the arduino's &lt;abbr title="Electrically Erasable Programmable Read-Only Memory"&gt;EEPROM&lt;/abbr&gt; to resemble the serial number of a real monome.&lt;br /&gt;&lt;br /&gt;I successfully followed Melka's instructions that have been posted on the &lt;a href="http://bricktable.wordpress.com/30/instructions/"&gt;bricktable blog&lt;/a&gt; &lt;span style="font-weight:bold;"&gt;(update: the bricktable blog instructions have been updated, you should follow those instructions rather than my version here).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You'll need access to a windows machine to complete this procedure, since the MProg software is windows only.&lt;br /&gt;&lt;br /&gt;I'm going to paste his instructions here too (I hope that's not treading on anyone's toes), and include some of my own notes inbetween.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;you have to install Mprog and the D2XX drivers from FTDI (your arduino will still work with the arduino IDE with this drivers)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ftdichip.com/Resources/Utilities/MProg3.0_Setup.exe"&gt;MProg 3.0&lt;/a&gt; &gt; http://www.ftdichip.com/Resources/Utilities.htm&lt;br /&gt;&lt;a href="http://www.ftdichip.com/Drivers/D2XX.htm"&gt;D2XX Drivers&lt;/a&gt; &gt; http://www.ftdichip.com/Drivers/D2XX.htm&lt;br /&gt;&lt;br /&gt;1/ Install both, then run Mprog&lt;/blockquote&gt;&lt;br /&gt;I installed the D2XX drivers on my winXP laptop first, following instructions in &lt;a href="http://www.ftdichip.com/Documents/InstallGuides/Windows_XP_Installation_Guide.pdf"&gt;this PDF&lt;/a&gt;. This part requires you to have the arduino plugged into the PC via the usb cable. NB. while following these instructions the 'found hardware wizard' will run twice, this is normal, just point it to the directory that contains the drivers you downloaded both times.&lt;br /&gt;&lt;br /&gt;I then installed Mprog on the same XP laptop, which was straightforward.&lt;br /&gt;&lt;blockquote&gt;2/ Launch Mprog, then click on Device / Scan. You should see something like this appearing in the box down.&lt;br /&gt;Code:&lt;br /&gt;&lt;br /&gt;Number Of Blank Devices = 0&lt;br /&gt;Number Of Programmed Devices = 1&lt;br /&gt;&lt;br /&gt;3/ Click on Tools &gt; Read and Parse. This will fill the boxes.&lt;br /&gt;4/ Check the “use fixed serial number” box and change the value below.&lt;br /&gt;To have your board recognized as a monome by monome serial, you have to enter something like&lt;br /&gt;m40h-xxx (we used m40h-001)&lt;/blockquote&gt;&lt;br /&gt;I used the m40h-001 code too.&lt;br /&gt;&lt;blockquote&gt;m64-xxxx&lt;br /&gt;m128-xxx&lt;br /&gt;m256-xxx&lt;br /&gt;Choose whatever you want, I’m not sure what is different between the various IDs, for the moment I’m using m40h-001.&lt;br /&gt;There is 2 protocols described on the monome site, and the 64/128/256 seems to be more complete (15 message IDs, 9 for the 40h protocol), so maybe you’d better use m256-xxx &lt;br /&gt;5/ Click on File &gt; save as&lt;br /&gt;6/ Once saved, click on the flash icon (Program all existing devices, Ctrl+P).&lt;/blockquote&gt;&lt;br /&gt;It's the icon that looks like a lightening flash.&lt;br /&gt;&lt;blockquote&gt;7/ Unplug / plug back your board from the usb port.&lt;/blockquote&gt;&lt;br /&gt;In my case, this meant unplugging the arduino's USB cable from my XP laptop and plugging it in to my macbook (where i have &lt;a href="http://monome.org/data/app/monomeserial"&gt;MonomeSerial&lt;/a&gt; installed).&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;8/ Run monomeserial, you should see something appear on the devices list.&lt;/blockquote&gt;&lt;br /&gt;You'll see the serial code you chose in the devices list (m40h-001).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-6081976593667339377?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/6081976593667339377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=6081976593667339377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6081976593667339377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6081976593667339377'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/flashing-eeprom.html' title='Flashing the EEPROM'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-690798268759116731</id><published>2008-06-27T10:11:00.000-07:00</published><updated>2008-06-27T10:14:04.667-07:00</updated><title type='text'>Difficulty lighting a whole row</title><content type='html'>I've been adjusting the MAX test code, to gets the lights moving in different ways. While doing this I noticed that if a row is asked to light seven or eight of its LEDs at once, all the lights go out and I have to reset the arduino to get it going again. I'd like to find out why that is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-690798268759116731?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/690798268759116731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=690798268759116731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/690798268759116731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/690798268759116731'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/difficulty-lighting-whole-row.html' title='Difficulty lighting a whole row'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1131459780548224980</id><published>2008-06-27T06:09:00.000-07:00</published><updated>2008-06-27T08:33:51.572-07:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2615975170/" title="LED driver test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3139/2615975170_fdbfcd4f20_m.jpg" width="240" height="180" alt="LED driver test" /&gt;&lt;/a&gt;&lt;br /&gt;The button pad PCBs are all soldered up and all the components are in place in the breadboard version of the controller. To test that the MAX chip was working and wired up correctly, I uploaded &lt;a href="http://www.arduino.cc/playground/LEDMatrix/Max7219?action=sourceblock&amp;ref=1"&gt;this code&lt;/a&gt; to the arduino.&lt;br /&gt;&lt;br /&gt;The MAX7219 has 'DIG' pins and 'SEG' pins, corresponding to the two axes of the LED matrix. The SEG pins supply voltage to the grid, and the DIG pins act as ground sinks. The SEG pins are named A to G and the eighth pin is called SEG DP. The DP pin should come first in the sequence, not last (the way I wired it first).&lt;br /&gt;&lt;br /&gt;Once I'd corrected it, the example code gave the following pattern.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2615975112/" title="LED driver test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3178/2615975112_1326072675_m.jpg" width="240" height="180" alt="LED driver test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The difference between the two distinct colours of LED show up quite clearly (less so in the photo), that's a bit of a shame.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1131459780548224980?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1131459780548224980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1131459780548224980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1131459780548224980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1131459780548224980'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/button-pad-pcbs-are-all-soldered-up-and.html' title=''/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3139/2615975170_fdbfcd4f20_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3500474693287008804</id><published>2008-06-26T04:35:00.000-07:00</published><updated>2008-06-26T04:39:38.196-07:00</updated><title type='text'>Button pad PCBs wired up</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2612346479/" title="137-3752_IMG by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3098/2612346479_e332c5df53_m.jpg" width="240" height="180" alt="137-3752_IMG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2613179426/" title="137-3754_IMG by cbit, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2160/2613179426_c244fd7db0_m.jpg" width="240" height="218" alt="137-3754_IMG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3500474693287008804?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3500474693287008804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3500474693287008804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3500474693287008804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3500474693287008804'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/button-pad-pcbs-wired-up.html' title='Button pad PCBs wired up'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3098/2612346479_e332c5df53_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1305600692979781824</id><published>2008-06-24T15:04:00.000-07:00</published><updated>2008-06-24T15:15:12.176-07:00</updated><title type='text'>What's the best way to cleanly divide header strips?</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2608997370/" title="This didn't work by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3060/2608997370_4ff9a293e8_m.jpg" width="240" height="178" alt="This didn't work" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The guy in my local electronics shop recommended that I just press in the notch with a knife. I tried it but wasn't able to snap them this way.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2608167601/" title="How do you break header strips apart cleanly? by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3184/2608167601_fa8400f579_m.jpg" width="240" height="158" alt="How do you break header strips apart cleanly?" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I used a chisel and hammer. Which snapped them in the correct place, but a few times the casing to one of the sides of the break was damaged, sometimes losing a pin.&lt;br /&gt;&lt;br /&gt;So what's a reliable way to cleanly break header strips like this into the lengths that you need?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2608167675/" title="Two wires into one via by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3085/2608167675_ce05b68d36_m.jpg" width="240" height="180" alt="Two wires into one via" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Meanwhile, at &lt;a href="http://bricktable.wordpress.com/30/instructions/#comment-39"&gt;Owen's suggestion&lt;/a&gt; I'm twisting wires together like this as a way of attaching two of them to a single via hole in the button pad PCBs (one wire is a jumper connecting the PCB to another one, the second wire leads to one of the shift registers or the max LED driver chip).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1305600692979781824?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1305600692979781824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1305600692979781824' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1305600692979781824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1305600692979781824'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/whats-best-way-to-cleanly-divide-header.html' title='What&apos;s the best way to cleanly divide header strips?'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3060/2608997370_4ff9a293e8_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3498618242179063881</id><published>2008-06-24T05:23:00.001-07:00</published><updated>2008-06-24T05:30:23.474-07:00</updated><title type='text'>Misc parts</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2607558398/" title="Misc parts by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3231/2607558398_7c4a2c10f0_m.jpg" width="240" height="142" alt="Misc parts" /&gt;&lt;/a&gt;&lt;br /&gt;I got hold of a few more parts I needed.&lt;br /&gt;&lt;br /&gt;The chip in the blue box is the MAX7219CNG LED driver.&lt;br /&gt;&lt;br /&gt;There's a long strip of paired male headers. I'll snap this into four lengths of 16 pins.&lt;br /&gt;&lt;br /&gt;The four black plastic things with female sockets are IDC connectors to attach to two ribbon cable lengths. I messed this up with the first one I tried and broke it, this time I'll use a vice to push down the part that cuts the cable. The IDC headers will plug into the paired header pin strips, forming a removable connection from the arduino shield PCB (at least I think I'll use a shield) to the button pad.&lt;br /&gt;&lt;br /&gt;The things with pins are IC sockets. I'm using these so that I don't have to solder the chips directly to the PCBs, and can replace them easily if necessary. There are two 16 pin sockets for the shift registers, and one 24 pin socket for the max chip.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3498618242179063881?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3498618242179063881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3498618242179063881' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3498618242179063881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3498618242179063881'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/i-got-hold-of-few-more-parts-i-needed.html' title='Misc parts'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3231/2607558398_7c4a2c10f0_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1654727012194453886</id><published>2008-06-22T14:18:00.001-07:00</published><updated>2008-06-22T14:25:58.887-07:00</updated><title type='text'>IDC connectors</title><content type='html'>I'm waiting around to get some parts (IC sockets, because I don't want to plug the expensive max chip directly into the breadboard for risk of bending it's legs or damaging it some other way) that will allow me to do a full breadboard test.&lt;br /&gt;&lt;br /&gt;In the meantime here's an &lt;a href="http://www.electusdistribution.com.au/images_uploaded/IDCconnE.pdf"&gt;illuminating PDF I found&lt;/a&gt;. It describes how the &lt;acronym title="Insulation Displacement Connector"&gt;IDC&lt;/acronym&gt; connectors work. This project will use four of them to anchor two ribbon cables to the pcbs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1654727012194453886?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1654727012194453886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1654727012194453886' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1654727012194453886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1654727012194453886'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/idc-connectors.html' title='IDC connectors'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-6373007967837285439</id><published>2008-06-20T01:59:00.000-07:00</published><updated>2008-06-20T02:06:36.080-07:00</updated><title type='text'>Monome/arduino code online</title><content type='html'>A &lt;a href="http://bricktable.wordpress.com/30/"&gt;new section&lt;/a&gt; has been added to the &lt;a href="http://bricktable.wordpress.com/"&gt;bricktable blog&lt;/a&gt; which is designed to document the construction of a single colour, sparkfun+arduino monome clone, just like the one I'm building. So far there's not much information there, but they have published the &lt;a href="http://bricktable.wordpress.com/30/download-code/"&gt;arduino code&lt;/a&gt; for their project, which is very useful.&lt;br /&gt;&lt;br /&gt;Since this code takes care of a bunch of things I haven't started to implement yet, like serial reading and writing, LED control and button debouncing, It's likely that I'll end up using it, or at least something derived from it.&lt;br /&gt;&lt;br /&gt;Another blog to add to my reader.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-6373007967837285439?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/6373007967837285439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=6373007967837285439' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6373007967837285439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6373007967837285439'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/monomearduino-code-online.html' title='Monome/arduino code online'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-4897992303528624424</id><published>2008-06-19T08:13:00.000-07:00</published><updated>2008-06-19T12:29:09.443-07:00</updated><title type='text'>Four boards need linking together</title><content type='html'>The four soldered-up button pads, with the button-press-related wires hooked into the vias:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2593113020/" title="Four button pads by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3284/2593113020_03f71ff179_m.jpg" width="180" height="240" alt="Four button pads" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2593113520/" title="Four button pads by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3074/2593113520_5d8ecc9834_m.jpg" width="240" height="224" alt="Four button pads" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I need to add inter-pad connections like this so that all the boards can be 'reached' by the arduino:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2592276415/" title="Four button pads by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3030/2592276415_44872a60be_m.jpg" width="240" height="224" alt="Four button pads" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure how to arrange that, mechanically, at the moment. Can anyone see how unsped has done it in &lt;a href="http://www.flickr.com/photos/unsped/2320709948/sizes/o/"&gt;this photo&lt;/a&gt;? I can't quite make out how he's attaching two cables to single vias along the outside edges of the boards.&lt;br /&gt;&lt;br /&gt;EDIT: &lt;a href="http://forum.sparkfun.com/viewtopic.php?p=50429#50429"&gt;Unsped explains&lt;/a&gt; that, for the edge vias which needed more than one wire attached to them, he first soldered male header pins in place, then soldered the necessary wires to those pins. Finally he covered the pins and the joints with liquid plumbers tape to prevent short-circuits. He adds that if he were to do the project again he wouldn't use header pins, but instead solder one wire pushed through the hole, and then solder the second one onto the pad created by soldering the first.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-4897992303528624424?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/4897992303528624424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=4897992303528624424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/4897992303528624424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/4897992303528624424'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/four-boards-need-linking-together.html' title='Four boards need linking together'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3284/2593113020_03f71ff179_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-8906313711636583142</id><published>2008-06-17T04:31:00.000-07:00</published><updated>2008-06-17T04:47:33.232-07:00</updated><title type='text'>Testing the Sparkfun buttonpad</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2586254955/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3172/2586254955_2eaaa38141_m.jpg" width="180" height="240" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I placed the silicon button pad ontop of the soldered-up PCB and hooked it up according to the circuit I'd made earlier in which I had simulated button presses using hookup wire.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2587088650/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3108/2587088650_b23fcaf698_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I twisted two cables together from eight strands of coloured wire to help with testing. I'm using a colour's position in the sequence of hues that form a rainbow as an indicator of its index position so that I can see quickly whether I'm connecting to the correct pin.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586255133/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3046/2586255133_5d52106b65_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I needed to alter the code a bit to get this working. Using the orientation of the silkscreen print on the PCB's, the arduino needs to supply voltage to the &lt;span style="font-style:italic;"&gt;rows&lt;/span&gt; of the sparkfun pad, and read from its &lt;span style="font-style:italic;"&gt;columns&lt;/span&gt;, not the other way around.&lt;br /&gt;&lt;br /&gt;Here's the new code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;//**************************************************************//&lt;br /&gt;//  Name    : 4x4 button test                                   //&lt;br /&gt;//  Author  : basementleds                                      //&lt;br /&gt;//  Date    : 17 Jun, 2008                                      //&lt;br /&gt;//  Version : 1.2                                               //&lt;br /&gt;//  Notes   : registers pc74hct165p, pc74hct164p                 //&lt;br /&gt;//****************************************************************&lt;br /&gt;&lt;br /&gt;int pin_button_in_clock = 12;&lt;br /&gt;int pin_button_in_apl = 13;&lt;br /&gt;int pin_button_in_data = 11;&lt;br /&gt;int pin_button_in_latch = pin_button_in_apl;&lt;br /&gt;&lt;br /&gt;int pin_button_out_clock=2;&lt;br /&gt;int pin_button_out_data=3;&lt;br /&gt;&lt;br /&gt;byte my_bit;&lt;br /&gt;byte activate_rows_byte;&lt;br /&gt;byte activate_rows_byte_disposable_copy;&lt;br /&gt;byte pressed_columns_byte;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  Serial.begin(9600); //start serial&lt;br /&gt;  pinMode(pin_button_in_latch, OUTPUT);&lt;br /&gt;  pinMode(pin_button_in_clock, OUTPUT); &lt;br /&gt;  pinMode(pin_button_in_data, INPUT);&lt;br /&gt;  pinMode(pin_button_out_data, OUTPUT); &lt;br /&gt;  pinMode(pin_button_out_clock, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt; activate_rows_byte=1;&lt;br /&gt; for (int r=7; r&gt;-1; r--) { // for each row&lt;br /&gt;   activate_rows_byte_disposable_copy=activate_rows_byte;&lt;br /&gt;   for (int x=0;x&lt;8; x++){ // for each digit of the activate rows byte&lt;br /&gt;     if((activate_rows_byte_disposable_copy &amp; 1) != 0){&lt;br /&gt;       digitalWrite(pin_button_out_data,HIGH); // if the LSB is 1, activate 'current' row&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;       digitalWrite(pin_button_out_data,LOW);&lt;br /&gt;     }&lt;br /&gt;     pulse_pin(pin_button_out_clock);&lt;br /&gt;     activate_rows_byte_disposable_copy=activate_rows_byte_disposable_copy &gt;&gt; 1;&lt;br /&gt;   }&lt;br /&gt;   send_row_events(get_pressed_columns(),r);&lt;br /&gt;   activate_rows_byte=activate_rows_byte &lt;&lt; 1; // cue the next lsb&lt;br /&gt; }// eo each row&lt;br /&gt; delay(900);&lt;br /&gt; Serial.println(" ");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void send_row_events(byte active_columns_byte,int row){&lt;br /&gt;   for (int e=0; e&lt;8; e++){&lt;br /&gt;     if((active_columns_byte &amp; 1) != 0){&lt;br /&gt;       print_keypress(e,row); // send index of the detected column press, and the row index&lt;br /&gt;     }&lt;br /&gt;     active_columns_byte=active_columns_byte &gt;&gt; 1;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void print_keypress(int column,int row){&lt;br /&gt;  Serial.print("Pressed: column");&lt;br /&gt;  Serial.print(column);&lt;br /&gt;  Serial.print(", row ");&lt;br /&gt;  Serial.println(row);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;byte get_pressed_columns(){&lt;br /&gt;  pulse_pin(pin_button_in_latch); // sample the button states&lt;br /&gt;  pressed_columns_byte=0; // clear the byte ready for new data&lt;br /&gt;  for (int n=0; n&lt;8; n++){&lt;br /&gt;   pressed_columns_byte = pressed_columns_byte &lt;&lt; 1 ; // shift bits to the left, making space to capture the state of the next button&lt;br /&gt;   pressed_columns_byte=clear_lsb(pressed_columns_byte); // make sure the new lsb is zero, to avoid surprises&lt;br /&gt;   my_bit = digitalRead(pin_button_in_data); // store the current Q7 value from the button register in my_bit &lt;br /&gt;   pressed_columns_byte = pressed_columns_byte | my_bit; // OR pressed_rows_byte with the new bit to add it to the lsb &lt;br /&gt;   pulse_pin(pin_button_in_clock); // cue the next bit slot for reading&lt;br /&gt;  }&lt;br /&gt;  return(pressed_columns_byte);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Set a pin to low, then high&lt;br /&gt;void pulse_pin(int pin_number){&lt;br /&gt; digitalWrite(pin_number,LOW);&lt;br /&gt; digitalWrite(pin_number,HIGH);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Clear the least significant bit&lt;br /&gt;byte clear_lsb(byte byte_to_clear){&lt;br /&gt;  return(byte_to_clear &amp; 0xfe);  // AND the byte with 11111110 to be sure that the LSB is zero&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-8906313711636583142?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/8906313711636583142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=8906313711636583142' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8906313711636583142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8906313711636583142'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/testing-sparkfun-buttonpad.html' title='Testing the Sparkfun buttonpad'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3172/2586254955_2eaaa38141_t.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-1783421677755374074</id><published>2008-06-17T03:51:00.000-07:00</published><updated>2008-06-17T04:30:40.840-07:00</updated><title type='text'>Soldering diodes and LEDs to the Sparkfun buttonpad PCB.</title><content type='html'>I needed to solder the components to the button pad PCBs to test further. I read a few soldering guides before beginning. &lt;a href="http://www.kpsec.freeuk.com/solder.htm"&gt;This one&lt;/a&gt; is pretty good.&lt;br /&gt;&lt;br /&gt;Many of the guides stress the importance of beginning with the components that would be hard to reach if others were already soldered in place. In general this means working from the middle of the pcb outwards. As I progressed, I clipped the legs off each component after it's solder had hardened, to keep things transparent.&lt;br /&gt;&lt;br /&gt;Here's the first diode slotted in place. &lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2587088842/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3110/2587088842_8d1a3b166e_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;View of the underside.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586255359/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3116/2586255359_5e157a4f39_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The first solder, it could be prettier.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2587088222/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3139/2587088222_854b6bf9a0_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Before I attached each LED to the board, I tested that it worked by slotting it into one of the other boards that I had hooked some wires to from my breadboard (don't forget to include a suitable resistor before the LED to prevent it from burning out).&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586254651/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3023/2586254651_ff4b002291_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's a view of the underside of the PCB I used to test the LEDs. It seemed to make sense to connect the &lt;a href="http://www.kpsec.freeuk.com/components/led.htm"&gt;anode&lt;/a&gt; (+ side, longer leg) of the LEDs to the BLUE via, because this places them neatly in the middle of the button area without the need to bend their little legs. While testing the LEDs I noticed that there seemed to be distinct colours of yellow in the batch that I ordered. Some LEDs shone a warm, orangy yellow and anothers a more lemony colour. I'm hoping the difference won't be pronounced enough to be disturbing, or that perhaps when the LEDs are being driven by the MAX driver, their colour will be consistent.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586254719/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3163/2586254719_701bc6c8cb_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I soldered LEDs and diodes alternately, turning the PCB around as necessary while it was gripped by the pincers of the 'helping hand'. Here's the middle section almost done.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2587088398/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3156/2587088398_771ca2c33e_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The finished thing.&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586255421/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3137/2586255421_deea6039ca_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2586254855/" title="Button pad test by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3087/2586254855_0bbef9cdf7_m.jpg" width="240" height="180" alt="Button pad test" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Once it was done I used some wires from the LED testing circuit on the breadboard to touch the joints of the LEDs again to verify that they still worked. One of them didn't, I probably damaged it by applying the soldering iron for too long. Once the iron is fully heated it seems that about 2 seconds of contact with the joint before applying the solder was enough to get a good result.&lt;br /&gt;&lt;br /&gt;I removed the dead LED using solder wick to remove the solder while pulling the plastic dome gently with pliers. I ordered 70 LEDs, so I can afford 6 of them to be wasted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-1783421677755374074?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/1783421677755374074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=1783421677755374074' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1783421677755374074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/1783421677755374074'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/soldering-diodes-and-leds-to-sparkfun.html' title='Soldering diodes and LEDs to the Sparkfun buttonpad PCB.'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3110/2587088842_8d1a3b166e_t.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-6756518349724375324</id><published>2008-06-14T00:15:00.000-07:00</published><updated>2008-06-14T09:27:25.540-07:00</updated><title type='text'>4x4 button matrix mock-up</title><content type='html'>Using one of the spakfun pcb's as a reference, I made a test to help understand the way a small button matrix would work with the shift registers and the arduino code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2577217163/" title="4x4 Button Pad by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3143/2577217163_0bcacc0f7a_m.jpg" width="240" height="160" alt="4x4 Button Pad" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I'm not sure I've set this up in the most sensible way, but it's working. Here's a high level account of what's going on:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The arduino loads the parallel-out register with a byte which has just one bit turned on. The one bit corresponds to one of the channels.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The corresponding pin of the parallel out register goes high, this provides voltage to one of the rows of the button matrix.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;The arduino pulses the latch pin of the serial out register so that it samples from the outputs of the button matrix columns&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If a button is pressed in the active row, the column of that button will be HIGH when the register samples it&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Next the arduino reads the contents of the serial output register, sending it clock pulses to access the byte one bit at a time.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Now that the arduino 'knows' which buttons are pressed in the current column, it creates a new byte to send to the parallel out register, to active the next row in the sequence&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Here's how the schematic looks.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2577216585/" title="4x4 Button Pad by cbit, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2012/2577216585_99aff16b40_m.jpg" width="238" height="240" alt="4x4 Button Pad" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's a closeup of the PCB. The wires are just loosely hooked in place as an aid to understanding how the signal will flow in the future.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2577217003/" title="4x4 Button Pad by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3170/2577217003_ca00d02ba9_m.jpg" width="240" height="180" alt="4x4 Button Pad" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the code running on the arduino.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;//**************************************************************//&lt;br /&gt;//  Name    : 4x4 button test                                   //&lt;br /&gt;//  Author  : basementleds                                      //&lt;br /&gt;//  Date    : 13 Jun, 2008                                      //&lt;br /&gt;//  Version : 1.0                                               //&lt;br /&gt;//  Notes   : registers pc74hct165p, pc74hct164p                 //&lt;br /&gt;//****************************************************************&lt;br /&gt;&lt;br /&gt;int pin_button_in_clock = 12;&lt;br /&gt;int pin_button_in_apl = 13;&lt;br /&gt;int pin_button_in_data = 11;&lt;br /&gt;int pin_button_in_latch = pin_button_in_apl;&lt;br /&gt;&lt;br /&gt;int pin_button_out_clock=2;&lt;br /&gt;int pin_button_out_data=3;&lt;br /&gt;&lt;br /&gt;byte my_bit;&lt;br /&gt;byte pressed_rows_byte;&lt;br /&gt;byte column_byte;&lt;br /&gt;byte column_byte_disposable_copy;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  Serial.begin(9600); //start serial&lt;br /&gt;  pinMode(pin_button_in_latch, OUTPUT);&lt;br /&gt;  pinMode(pin_button_in_clock, OUTPUT); &lt;br /&gt;  pinMode(pin_button_in_data, INPUT);&lt;br /&gt;  pinMode(pin_button_out_data, OUTPUT); &lt;br /&gt;  pinMode(pin_button_out_clock, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt; column_byte=1;&lt;br /&gt; for (int c=7; c&gt;-1; c--) { // for each column&lt;br /&gt;   column_byte_disposable_copy=column_byte;&lt;br /&gt;   for (int x=0;x&lt;8; x++){&lt;br /&gt;     if((column_byte_disposable_copy &amp; 1) != 0){&lt;br /&gt;       digitalWrite(pin_button_out_data,HIGH); // if the LSB is 1, turn the 'current' led on&lt;br /&gt;     }&lt;br /&gt;     else {&lt;br /&gt;       digitalWrite(pin_button_out_data,LOW);&lt;br /&gt;     }&lt;br /&gt;     pulse_pin(pin_button_out_clock);&lt;br /&gt;     column_byte_disposable_copy=column_byte_disposable_copy &gt;&gt; 1;&lt;br /&gt;   }&lt;br /&gt;   send_column_events(get_pressed_rows(),c);&lt;br /&gt;   column_byte=column_byte &lt;&lt; 1;&lt;br /&gt; }// eo each column&lt;br /&gt; delay(900);&lt;br /&gt; Serial.println(" ");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void send_column_events(byte active_rows_byte,int column){&lt;br /&gt;   for (int e=0; e&lt;8; e++){&lt;br /&gt;     if((active_rows_byte &amp; 1) != 0){&lt;br /&gt;       print_keypress(column,e);&lt;br /&gt;     }&lt;br /&gt;     active_rows_byte=active_rows_byte &gt;&gt; 1;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void print_keypress(int x,int y){&lt;br /&gt;  Serial.print("Pressed: ");&lt;br /&gt;  Serial.print(x);&lt;br /&gt;  Serial.print(", ");&lt;br /&gt;  Serial.println(y);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;byte get_pressed_rows(){&lt;br /&gt;  pulse_pin(pin_button_in_latch); // sample the button states&lt;br /&gt;  pressed_rows_byte=0; // clear the byte ready for new data&lt;br /&gt;  for (int n=0; n&lt;8; n++){&lt;br /&gt;   pressed_rows_byte = pressed_rows_byte &lt;&lt; 1 ; // shift bits to the left, making space to capture the state of the next button&lt;br /&gt;   pressed_rows_byte=clear_lsb(pressed_rows_byte); // make sure the new lsb is zero, to avoid surprises&lt;br /&gt;   my_bit = digitalRead(pin_button_in_data); // store the current Q7 value from the button register in my_bit &lt;br /&gt;   pressed_rows_byte = pressed_rows_byte | my_bit; // OR pressed_rows_byte with the new bit to add it to the lsb &lt;br /&gt;   pulse_pin(pin_button_in_clock); // cue the next bit slot for reading&lt;br /&gt;  }&lt;br /&gt;  return(pressed_rows_byte);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Set a pin to low, then high&lt;br /&gt;void pulse_pin(int pin_number){&lt;br /&gt; digitalWrite(pin_number,LOW);&lt;br /&gt; digitalWrite(pin_number,HIGH);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Clear the least significant bit&lt;br /&gt;byte clear_lsb(byte byte_to_clear){&lt;br /&gt;  return(byte_to_clear &amp; 0xfe);  // AND the byte with 11111110 to be sure that the LSB is zero&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here I've simulated pressing three buttons by making connections between the input (SWITCH) and the output (SWITCH-GND) sockets. Below you see the output of the serial window in the arduino software.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2577248519/" title="buttonpad_test_with_readout by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3171/2577248519_073509d4b4_m.jpg" width="183" height="240" alt="buttonpad_test_with_readout" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next I need to figure out how to connect these wires to the PCB in a non-permanent way so that I can test this circuit with the real buttons, and see if it's still working as expected. If anyone has any thoughts about how I could do that please post in the comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-6756518349724375324?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/6756518349724375324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=6756518349724375324' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6756518349724375324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/6756518349724375324'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/4x4-button-matrix-mock-up.html' title='4x4 button matrix mock-up'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3143/2577217163_0bcacc0f7a_t.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3027795382171970368</id><published>2008-06-14T00:00:00.000-07:00</published><updated>2008-06-14T09:24:18.377-07:00</updated><title type='text'>Button matrixes, part one</title><content type='html'>The next thing I'd like to get a proper handle on is how the button matrix will work. Specifically, how the arduino will know the coordinates of any buttons that are being pressed. So far, this &lt;a href="http://www.dribin.org/dave/keyboard/one_html/"&gt;excellent little article&lt;/a&gt; has been very helpful.&lt;br /&gt;&lt;br /&gt;This diagram captures how I'm expecting it to work in a general way:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2576499980/" title="Sparkfun button pad pcb by cbit, on Flickr"&gt;&lt;img src="http://farm3.static.flickr.com/2114/2576499980_5a873aaf36_m.jpg" width="240" height="166" alt="Sparkfun button pad pcb" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3027795382171970368?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3027795382171970368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3027795382171970368' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3027795382171970368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3027795382171970368'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/button-matrixes-part-one.html' title='Button matrixes, part one'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2114/2576499980_5a873aaf36_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3206500683562779660</id><published>2008-06-13T15:01:00.000-07:00</published><updated>2008-06-13T15:32:39.728-07:00</updated><title type='text'>The 164 isn't built for controlling LEDs</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2576500170/" title="Latchless shift register by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3117/2576500170_10a22d0525_m.jpg" width="187" height="240" alt="Latchless shift register" /&gt;&lt;/a&gt;&lt;br /&gt;I swapped the 7JE75K shift register I was using in a &lt;a href="http://basementleds.blogspot.com/2008/06/shift-register-ins-and-outs.html"&gt;previous post&lt;/a&gt; for a PC74HCT165P (the monome uses a 164 too, for detecting button presses). To test it out I linked it to the same set of LEDs. When one of the 'switches' was closed, the corresponding LED should light up.&lt;br /&gt;&lt;br /&gt;Once I got this working I noticed that whenever I had any LEDs thhttp://www.blogger.com/img/gl.link.gifat were on, the LEDs that supposed to be off were also glowing faintly (see image). It turns out that this is a side effect of the PC74HCT164P having no latch pin. When it shifts data from one slot to the next, that data is also immediately sent to the output pins. A latch, like the one the 7JE75K has, makes it possible to shuffle the bits around in the register in 'secret' and when they're ready, they're 'revealed' to the output pins all at once. So with the 165, when one bit in the register is high, it very briefly activates each of it's output pins as that bit gets shifted. When this happens many times a second it looks like the LEDs are faintly glowing.&lt;br /&gt;&lt;br /&gt;Of course the 164 doesn't actually control LEDs in the &lt;a href="http://en.wikipedia.org/wiki/Monome"&gt;monome&lt;/a&gt;. So this isn't a problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3206500683562779660?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3206500683562779660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3206500683562779660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3206500683562779660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3206500683562779660'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/164-isnt-built-for-controlling-leds.html' title='The 164 isn&apos;t built for controlling LEDs'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3117/2576500170_10a22d0525_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-92165553134961673</id><published>2008-06-13T14:58:00.001-07:00</published><updated>2008-06-13T15:00:31.461-07:00</updated><title type='text'>Yellow LEDs 3mm 1000 mcd clear</title><content type='html'>&lt;a href="http://www.flickr.com/photos/54829881@N00/2576499844/" title="Yellow LED 3mm 1000 mcd clear by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3190/2576499844_fd38dd49ce_m.jpg" width="240" height="180" alt="Yellow LED 3mm 1000 mcd clear" /&gt;&lt;/a&gt;&lt;br /&gt;The LEDs arrived. They're clear so I wondered whether they would project a 'spot' on the inside of the sparkfun buttons, but the light seems to spread pretty well through the rubber.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2575671707/" title="136-3700_IMG by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3055/2575671707_ed438a01dd_m.jpg" width="240" height="180" alt="136-3700_IMG" /&gt;&lt;/a&gt;http://www.htvision.com/product.asp?intProdID=159&lt;br clear="all" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-92165553134961673?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/92165553134961673/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=92165553134961673' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/92165553134961673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/92165553134961673'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/yellow-led-3mm-1000-mcd-clear.html' title='Yellow LEDs 3mm 1000 mcd clear'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3190/2576499844_fd38dd49ce_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-8804132913191412982</id><published>2008-06-09T10:36:00.001-07:00</published><updated>2008-06-10T15:26:15.669-07:00</updated><title type='text'>Shift Register ins and outs</title><content type='html'>There are two shift registers in the &lt;a href="http://wiki.monome.org/view/40hLogicSchematic"&gt;monome schematic&lt;/a&gt;. A parallel to serial (74HC165), and a serial to parallel one (74HC164).&lt;br /&gt;&lt;br /&gt;I knew that these had something to do with dealing with button presses but I wanted to understand exactly what they were doing. With the help of an electronics-savvy friend I set up an arduino circuit. In this post I'll add the schematic and the code, and in the following post I'll try to explain what the code is doing (though it's heavily annotated, so that might be redundant). Click the images to see bigger versions.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2564500013/" title="shiftregistertute1 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3255/2564500013_4525f9c486.jpg" alt="shiftregistertute1" height="500" width="294" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's how it looks on the breadboard (NB: I'm using a wire to simulate the operation of the switches).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/54829881@N00/2565913720/" title="shiftregisters1 by cbit, on Flickr"&gt;&lt;img src="http://farm4.static.flickr.com/3169/2565913720_20655c38a6_m.jpg" alt="shiftregisters1" height="240" width="210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here's the Arduino code.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;//**************************************************************//&lt;br /&gt;//  Name    : shiftIn/shiftOut Example                          //&lt;br /&gt;//  Author  : basementleds                                      //&lt;br /&gt;//  Date    : 9 Jun, 2008                                       //&lt;br /&gt;//  Version : 1.0                                               //&lt;br /&gt;//  Notes   : button register pc74hct165p, led register 7JE75K  //&lt;br /&gt;//****************************************************************&lt;br /&gt;&lt;br /&gt;int pin_button_clock = 12;&lt;br /&gt;int pin_button_apl = 13;&lt;br /&gt;int pin_button_data = 11;&lt;br /&gt;int pin_button_latch = pin_button_apl;&lt;br /&gt;&lt;br /&gt;int pin_led_clock=2;&lt;br /&gt;int pin_led_latch=3;&lt;br /&gt;int pin_led_data=4;&lt;br /&gt;&lt;br /&gt;byte my_bit;&lt;br /&gt;byte button_byte;&lt;br /&gt;&lt;br /&gt;void setup() {&lt;br /&gt;  Serial.begin(9600); //start serial&lt;br /&gt;&lt;br /&gt;  pinMode(pin_button_latch, OUTPUT);&lt;br /&gt;  pinMode(pin_button_clock, OUTPUT); &lt;br /&gt;  pinMode(pin_button_data, INPUT);&lt;br /&gt;&lt;br /&gt;  pinMode(pin_led_data, OUTPUT);&lt;br /&gt;  pinMode(pin_led_latch, OUTPUT); &lt;br /&gt;  pinMode(pin_led_clock, OUTPUT);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void loop() {&lt;br /&gt;  set_led_states(get_button_states());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;byte get_button_states(){&lt;br /&gt;  pulse_pin(pin_button_latch); // sample the button states&lt;br /&gt;  button_byte=0; // clear the byte ready for new data&lt;br /&gt;  for (int n=0; n&lt;8; n++){&lt;br /&gt;   button_byte = button_byte &lt;&lt; 1 ; // shift bits to the left, making space to capture the state of the next button&lt;br /&gt;   button_byte=clear_lsb(button_byte); // make sure the new lsb is zero, to avoid surprises&lt;br /&gt;   my_bit = digitalRead(pin_button_data); // store the current Q7 value from the button register in my_bit &lt;br /&gt;   button_byte = button_byte | my_bit; // OR th my_input with the new bit to add it to the lsb &lt;br /&gt;   pulse_pin(pin_button_clock); // cue the next bit slot for reading&lt;br /&gt;  }&lt;br /&gt;  Serial.println (button_byte,BIN);&lt;br /&gt;  return(button_byte);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void set_led_states(byte button_states){&lt;br /&gt;  for (int n=0; n&lt;8; n++) {&lt;br /&gt;    if((button_states &amp; 1) != 0) digitalWrite(pin_led_data,HIGH); // if the LSB is 1, turn the 'current' led on&lt;br /&gt;     else digitalWrite(pin_led_data,LOW);&lt;br /&gt;    button_states = button_states &gt;&gt; 1; // Shift to get a new LSB from buttonstates&lt;br /&gt;    pulse_pin(pin_led_clock); // address the next bit slot&lt;br /&gt;   }&lt;br /&gt;  pulse_pin(pin_led_latch); // when the latch goes from low to high, the data that's been stored to the register's memory gets sent to its output pins&lt;br /&gt;}&lt;br /&gt; &lt;br /&gt;// Set a pin to low, then high&lt;br /&gt;void pulse_pin(int pin_number){&lt;br /&gt; digitalWrite(pin_number,LOW);&lt;br /&gt; digitalWrite(pin_number,HIGH);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Clear the least significant bit&lt;br /&gt;byte clear_lsb(byte byte_to_clear){&lt;br /&gt;  return(byte_to_clear &amp; 0xfe);  // AND the byte with 11111110 to be sure that the LSB is zero&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here's how it should look when it's running:&lt;br /&gt;&lt;object width="400" height="321"&gt; &lt;param name="allowfullscreen" value="true" /&gt; &lt;param name="allowscriptaccess" value="always" /&gt; &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1150928&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" /&gt; &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1150928&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=00ADEF&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="321"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1150928?pg=embed&amp;sec=1150928"&gt;Shift registers 1&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user458978?pg=embed&amp;sec=1150928"&gt;basementhum&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;sec=1150928"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-8804132913191412982?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/8804132913191412982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=8804132913191412982' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8804132913191412982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8804132913191412982'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/shift-register-ins-and-outs.html' title='Shift Register ins and outs'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm4.static.flickr.com/3255/2564500013_4525f9c486_t.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-2654392072749454426</id><published>2008-06-09T10:10:00.000-07:00</published><updated>2008-06-09T10:22:35.934-07:00</updated><title type='text'>Hello World/Arduino</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm3.static.flickr.com/2024/2337914481_ba30bc8cb4_m.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://farm3.static.flickr.com/2024/2337914481_ba30bc8cb4_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;Once I had the Arduino board in my greasy paws I worked through this &lt;a href="http://www.ladyada.net/learn/arduino/"&gt;excellent little series of tutorials&lt;/a&gt;. They're a very simple introduction to how to get data in and out of the thing, and to how the Arduino software works. Strongly recommended!&lt;br /&gt;&lt;br /&gt;Photo: &lt;a href="http://www.flickr.com/photos/adactio/archives/date-posted/2008/03/16/"&gt;Adactio&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-2654392072749454426?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/2654392072749454426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=2654392072749454426' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2654392072749454426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2654392072749454426'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/hello-worldarduino.html' title='Hello World/Arduino'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm3.static.flickr.com/2024/2337914481_ba30bc8cb4_t.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-8679633589055377609</id><published>2008-06-09T09:39:00.001-07:00</published><updated>2008-06-09T13:36:42.122-07:00</updated><title type='text'>Tools</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm1.static.flickr.com/31/89740503_4cb2501705_m.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://farm1.static.flickr.com/31/89740503_4cb2501705_m.jpg" alt="" border="0" /&gt;&lt;/a&gt;Because this is the first electronics project I've attempted, I needed to buy some general stuff that wasn't specific to the monome project. For anyone following along here's what (I think) you'll need:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Soldering Iron&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Soldering Iron Holder, with sponge&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Solderless Breadboard.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Solid core hookup wire (bring your Arduino along to the shop to make sure you get wire of a suitable thickness to securely anchor in the Arduino's pin sockets, the first bunch of wire that I bought was too thin)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Assorted resistors&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Assorted capacitors&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Assorted diodes&lt;/li&gt;&lt;br /&gt;&lt;li&gt;LEDs for testing (I got ten)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Wire clippers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Multimeter&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;I'll add to this list if and when I discover that I needed more general purpose bits and pieces.&lt;br /&gt;&lt;br /&gt;Photo: &lt;a href="http://www.flickr.com/photos/aaronharmon/"&gt;aaronharmon&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-8679633589055377609?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/8679633589055377609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=8679633589055377609' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8679633589055377609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/8679633589055377609'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/groundwork.html' title='Tools'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://farm1.static.flickr.com/31/89740503_4cb2501705_t.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-3433426688497781630</id><published>2008-06-09T09:01:00.000-07:00</published><updated>2008-09-26T14:30:16.258-07:00</updated><title type='text'>Costs &amp; Parts</title><content type='html'>Here's a list of the costs I'm making and the parts I'm using. I've included a link to the supplier page where possible. I'll update this list as I order new parts, or if I discover that I didn't end up using bits that I ordered.&lt;br /&gt;&lt;br /&gt;Whenever shipping costs are mentioned this refers to shipping the product to the Netherlands.&lt;br /&gt;&lt;table style="margin-top:0px;padding-top:0px"&gt;&lt;br /&gt;&lt;tbody style="margin-top:0px;padding-top:0px"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.eztronics.nl/webshop/catalog/product_info.php/cPath/36/products_id/114?osCsid=80dbb0aec79e2c5c3ab4761865100276&lt;br /&gt;"&gt;Arduino Diecimila&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;26.18 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7835"&gt;Sparkfun Button Pads&lt;/a&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;22.82 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8033"&gt;Sparkfun Button Pad PCBs&lt;/a&gt;&lt;/td&gt;&lt;td&gt;4&lt;/td&gt;&lt;td&gt;25.33 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=8588"&gt;Diode Small Signal - 1N4148&lt;/a&gt;&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;6.68 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Shipping of Sparkfun order&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;35 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.htvision.com/product.asp?intProdID=159"&gt;Yellow LEDs&lt;/a&gt; (3mm, 1000 mcd, shipping included)&lt;/td&gt;&lt;td&gt;70&lt;/td&gt;&lt;td&gt;11.35 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Shift register 74HCT165 (Parallel in/serial out)&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0.95 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Shift register 74HCT164 (Serial in/parallel out)&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0.95 EUR&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.display.nl/Halfgeleiders/IC-per-functie/Driver/MAX7219CNG+.html"&gt;MAX7219CNG+ (LED driver)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;18.19 EUR&lt;/td&gt;&lt;/tr&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.display.nl/Weerstanden/Weerstand-netwerk/Weerstandnetwerk-SIL-10/4610X101.103.html"&gt;10Kohm, 10 pin, Resistor network&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0.23&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;0.1uf Capacitor&lt;/td&gt;&lt;td&gt;3&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;10uf Capacitor&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;16 pin IC Socket&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;14 pin IC Socket&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;24 pin IC Socket&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;1.79 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Arduino Shield PCB (&lt;a href="http://unsped.googlepages.com/"&gt;files&lt;/a&gt;, &lt;a href="http://www.4pcb.com/"&gt;4pcb&lt;/a&gt;)&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;22.78 EUR&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.machinecollective.org/index.php?page=faceplates#arduinome"&gt;MachineCollective Enclosure&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;80 EUR&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Total ±270 EUR&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-3433426688497781630?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/3433426688497781630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=3433426688497781630' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3433426688497781630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/3433426688497781630'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/costs-parts.html' title='Costs &amp; Parts'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9168815313850249309.post-2728891030895264900</id><published>2008-06-09T08:44:00.000-07:00</published><updated>2008-06-09T08:54:07.161-07:00</updated><title type='text'>What it's all about</title><content type='html'>Posts on this blog will document the construction of an 8*8, &lt;a href="http://www.arduino.cc/"&gt;Arduino-powered&lt;/a&gt;, &lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=7835"&gt;Sparkfun button pad&lt;/a&gt; using, DIY &lt;a href="http://monome.org/"&gt;monome&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Although the Sparkfun buttons are big enough to accommodate &lt;a href="http://www.upwardnotnorthward.com/"&gt;RGB LEDs&lt;/a&gt;, I'll be using single colour ones to keep things simpler.&lt;br /&gt;&lt;br /&gt;My knowledge of electronics is hovering just above absolute beginner level, so I hope this will develop into a useful source of information for other electronics beginners wanting to build a &lt;a href="http://monome.org/"&gt;monome&lt;/a&gt; controller.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9168815313850249309-2728891030895264900?l=basementleds.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://basementleds.blogspot.com/feeds/2728891030895264900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9168815313850249309&amp;postID=2728891030895264900' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2728891030895264900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9168815313850249309/posts/default/2728891030895264900'/><link rel='alternate' type='text/html' href='http://basementleds.blogspot.com/2008/06/what-its-all-about.html' title='What it&apos;s all about'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry></feed>
