<?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:blogger='http://schemas.google.com/blogger/2008' 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-7419927519330936752</id><updated>2024-08-30T05:27:42.265+01:00</updated><category term="green energy"/><category term="airshow photos"/><category term="blog"/><title type='text'>n1c0la5</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>35</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-860039641502258044</id><published>2017-07-02T21:59:00.000+01:00</published><updated>2017-07-02T21:59:28.360+01:00</updated><title type='text'>Javascript to filter and count records</title><content type='html'>Github was talking about open source Fridays ... what&#39;s wrong with open source weekemds?&lt;br /&gt;
&lt;br /&gt;
I needed something like this but couldn&#39;t find it on the web.... so time to write it myself. The idea is to have a python routine compile a set of data (which I can&#39;t share so it just generates some date related data) and then use a webpage with javascript to present record counts for different fields.&lt;br /&gt;
&lt;br /&gt;
The top line of buttons lets you select which field to show, by default it shows all fields.&lt;br /&gt;
The second line shows the filters that are currently active, click on one of them to remove it again or &#39;Clear All&#39; to clear them all in one go.&lt;br /&gt;
&lt;br /&gt;
Then there is a table with the results, click on any of the field values to create a filter for that field and value combination. Currently there is no way to have filters for multiple values of the same field.&lt;br /&gt;
&lt;br /&gt;
Lessons learned:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;mixing javascript and html: it took me a while to figure out that when you pass an array through javascript to a html button,&lt;/li&gt;
&lt;li&gt;the inspect feature makes life so much easier...,&lt;/li&gt;
&lt;li&gt;in order to copy an array you can&#39;t just assign it, you need to use .slice() to make a deep copy.&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Answers found on stackoverflow:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/1960473/unique-values-in-an-array&quot;&gt;https://stackoverflow.com/questions/1960473/unique-values-in-an-array&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript&quot;&gt;https://stackoverflow.com/questions/17428587/transposing-a-2d-array-in-javascript&amp;nbsp;&lt;/a&gt;&amp;nbsp;(not used but may simplify parts of the code),&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/3730510/javascript-sort-array-and-return-an-array-of-indicies-that-indicates-the-positi&quot;&gt;https://stackoverflow.com/questions/3730510/javascript-sort-array-and-return-an-array-of-indicies-that-indicates-the-positi&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Try it out: &lt;u&gt;&lt;a href=&quot;http://www.n1c0la5.co.uk/count_and_filter/table.html&quot;&gt;count and filter test&lt;/a&gt;&lt;/u&gt;.&lt;br /&gt;
&lt;br /&gt;
And here is the code:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;head&amp;gt;&amp;lt;title&amp;gt;count and filter test&amp;lt;/title&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;body onload=&quot;generate_data();filterandcount(&#39;all&#39;,[],[]);&quot;&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;p id=&quot;controls&quot;&amp;gt; &amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;p id=&quot;filters&quot;&amp;gt; &amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;p id=&quot;result_table&quot;&amp;gt; &amp;lt;/p&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// additional features that could be implemented:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// 1. show subset/all info for the selected filter, count becomes a button to show this&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function onlyUnique(value, index, self)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;return self.indexOf(value) === index;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var records=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var filter_field_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var filter_value_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function generate_data()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// generate some data&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;//var records=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var base=[2014,1,1,0,0,0];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var range=[4,12,31,23,59,59];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var len=[4,2,2,2,2,2];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var num_records=1000;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;6; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;num_records; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;var t2=&quot;0000&quot;+(Math.floor(Math.random()*range[i])+base[i]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t2=t2.substring(t2.length-len[i]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t.push(t2);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; records.push(t);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;5; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;num_records; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;var t2=records[0][j];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var k=0; k&amp;lt;(i+1); k++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; t2+=records[k+1][j];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t.push(t2);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; records.push(t);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;function filterandcount(do_field,filter_field_array_p,filter_value_array_p)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;//console.log(do_field);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;// console.log(typeof&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var filter_field_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var filter_value_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;if (filter_field_array_p instanceof Array)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_field_array=filter_field_array_p.slice();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_field_array.push(filter_field_array_p);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;if (filter_value_array_p instanceof Array)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_value_array=filter_value_array_p.slice();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_value_array.push(filter_value_array_p);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var field_names = [&#39;year&#39;,&#39;month&#39;,&#39;date&#39;,&#39;hour&#39;,&#39;minute&#39;,&#39;second&#39;,&#39;y+month&#39;,&#39;y+m+day&#39;,&#39;y+m+d+hour&#39;,&#39;y-m-d-h-minute&#39;,&#39;y-m-d-h-m-second&#39;];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var controls_string=&quot;Count: &amp;lt;button type=&#39;button&#39; onclick=\&quot;filterandcount(&#39;all&#39;,[&quot;+filter_field_array+&quot;],[&quot;+filter_value_array+&quot;])\&quot;&amp;gt;All&amp;lt;/button&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;field_names.length; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; controls_string+=&quot;&amp;lt;button type=&#39;button&#39; onclick=\&quot;filterandcount(&#39;&quot;+field_names[i]+&quot;&#39;,[&quot;+filter_field_array+&quot;],[&quot;+filter_value_array+&quot;])\&quot;&amp;gt;&quot;+field_names[i]+&quot;&amp;lt;/button&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;document.getElementById(&quot;controls&quot;).innerHTML=controls_string;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var t_filter_value=&quot;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;if (filter_value_array.length==0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; t_filter_value=&quot;&amp;amp;lt;none&amp;amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; // remove duplicate values - the user should not be doing this!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t_filter_field_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t_filter_value_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var i=0; i&amp;lt;filter_value_array.length; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;// only add them if we can&#39;t find them in the temp arrays&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;var t=0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var j=0; j&amp;lt;t_filter_value_array.length; j++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if (filter_field_array[i]==t_filter_field_array[j])&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;if (filter_value_array[i]==t_filter_value_array[j])&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; t+=1;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;if (t==0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; t_filter_field_array.push(filter_field_array[i]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; t_filter_value_array.push(filter_value_array[i]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_field_array=t_filter_field_array.slice();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; filter_value_array=t_filter_value_array.slice();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; console.log(filter_field_array);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; console.log(filter_value_array);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var i=0; i&amp;lt;filter_value_array.length; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t_filter_field_array=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t_filter_value_array=[]; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;// remove current values from arrays&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var j=0; j&amp;lt;filter_value_array.length; j++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if (i!=j)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;t_filter_field_array.push(filter_field_array[j]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;t_filter_value_array.push(filter_value_array[j]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t_filter_value+=&quot;&amp;lt;button type=&#39;button&#39; onclick=\&quot;filterandcount(&#39;&quot;+do_field+&quot;&#39;,[&quot;+t_filter_field_array+&quot;],[&quot;+t_filter_value_array+&quot;])\&quot;&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t_filter_value+=&quot;&amp;lt;b&amp;gt;&amp;amp;#X2716&amp;lt;/b&amp;gt; &quot;+filter_value_array[i]+&quot; on &quot;+field_names[filter_field_array[i]]+&quot;&amp;lt;/button&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var filters_string=&quot;Filter: &quot; +t_filter_value+&quot;&amp;amp;nbsp;&amp;lt;button type=&#39;button&#39; onclick=\&quot;filterandcount(&#39;&quot;+do_field+&quot;&#39;,[],[])\&quot;&amp;gt;Clear All&amp;lt;/button&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;document.getElementById(&quot;filters&quot;).innerHTML=filters_string;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// but we actually need to transpose the array so we can grab the unique values per array&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;//transpose = m =&amp;gt; m[0].map((x,i) =&amp;gt; m.map(x =&amp;gt; x[i]))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;//records2=transpose(records);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// uhm, we&#39;re generating the data ourselves a couple lines up - so why transpose!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// fixed!&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// instead of just assigned it to records2 run any filters first&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var records2=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;if (filter_field_array.length!=0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; // create a set of empty arrays&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var i=0; i&amp;lt;records.length; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;records2.push([]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var i=0; i&amp;lt;records[0].length; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;var t=0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var j=0; j&amp;lt;filter_field_array.length; j++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if (records[filter_field_array[j]][i]==filter_value_array[j])&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;t+=1;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;if (t==filter_field_array.length)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; for (var j=0; j&amp;lt;records.length; j++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;records2[j].push(records[j][i]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; records2=records;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;//records2=records;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// now get the unique values per sub-array&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var unique_records2=[]; //initialize empty array&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;records2.length; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; // not optimized: only do the relevant sub-array(s)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //if ((field_names[i]==do_field)||(do_field==&quot;all&quot;))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; unique_records2.push(records2[i].filter(onlyUnique));&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //unique_records2.push([]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; //}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// now we need to count the values for those&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// first we populate the count array with 0&#39;s&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var unique_count2=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;unique_records2.length; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; unique_count2.push([]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;unique_records2[i].length; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;unique_count2[i].push(0);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// now we can just increase whenever we have a match&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;records2.length; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;records2[i].length; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var k=0; k&amp;lt;unique_records2[i].length; k++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if (records2[i][j]==unique_records2[i][k])&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;unique_count2[i][k]+=1;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// sort each fields value in descending order&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// use an array with pointers so we don&#39;t end up copying lots of data&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;var unique_sort_order=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;unique_count2.length; i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; // add an index to the array&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;unique_count2[i].length; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t[j]=[unique_count2[i][j],j];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; t.sort(function(left, right) { return left[0] &amp;lt; right[0] ? -1 : 1; });&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; t.reverse();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; var t2=[];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; for (var j=0; j&amp;lt;t.length; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;t2.push(t[j][1]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;//t2[j]=t[j][0];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; unique_sort_order.push(t2);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// now replace the table in div with the contents&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;table_string=&quot;&amp;lt;table border=1&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;for (var i=0; i&amp;lt;field_names.length; i++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; if ((field_names[i]==do_field)||(do_field==&quot;all&quot;))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;var ti=filter_field_array.slice();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;ti.push(i);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;table_string +=&quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;b&amp;gt;&quot;+field_names[i]+&quot;&amp;lt;/b&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (var j=0; j&amp;lt;unique_records2[i].length; j++)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; var ti2=filter_value_array.slice();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; ti2.push(unique_records2[i][unique_sort_order[i][j]]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; //console.log(ti);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; //console.log(ti2);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; table_string +=&quot;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;&amp;lt;button type=&#39;button&#39; onclick=\&quot;filterandcount(&#39;all&#39;,[&quot;+ti+&quot;],[&quot;+ti2+&quot;])\&quot;&amp;gt;&quot;+unique_records2[i][unique_sort_order[i][j]]+&quot;&amp;lt;/button&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; table_string +=&quot;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;&quot;+unique_count2[i][unique_sort_order[i][j]]+&quot;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;table_string +=&quot;&amp;lt;/table&amp;gt;&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;// simplified: print the array count values&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;nbsp;document.getElementById(&quot;result_table&quot;).innerHTML = table_string;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/860039641502258044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2017/07/javascript-to-filter-and-count-records.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/860039641502258044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/860039641502258044'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2017/07/javascript-to-filter-and-count-records.html' title='Javascript to filter and count records'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-6703434327183028090</id><published>2016-07-09T16:01:00.001+01:00</published><updated>2016-07-09T16:19:29.034+01:00</updated><title type='text'>Painting the garage door</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
Monday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeqRSikGeOuo9guM_XGnRM5kNJLIE6RlzgGvQD0mk0JeV5NY4pTDdlusOGIrAanFMTnkYHRoK7WcQl6bnKvO4K59AbD-QS6Gwd2oz-SuCF1OiqK1sL5KnRcPrxgPtNBVgH2iwZ2RqEbU2/s1600/small_yellow.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeqRSikGeOuo9guM_XGnRM5kNJLIE6RlzgGvQD0mk0JeV5NY4pTDdlusOGIrAanFMTnkYHRoK7WcQl6bnKvO4K59AbD-QS6Gwd2oz-SuCF1OiqK1sL5KnRcPrxgPtNBVgH2iwZ2RqEbU2/s320/small_yellow.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
too yellow...&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
Tuesday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLoEeSzhi4gn654EOSIE4kZK5Ha5YDfn0CX_zADkeFD_K_rYRV1Kohr-3rzfclBslTM_eOcqh0ush8BMVReHarQtZYm6rovS7IJBOqBIvESBSNvpjw90o41FskzTfypGc_Fqw1RN7P2ruq/s1600/small_red.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLoEeSzhi4gn654EOSIE4kZK5Ha5YDfn0CX_zADkeFD_K_rYRV1Kohr-3rzfclBslTM_eOcqh0ush8BMVReHarQtZYm6rovS7IJBOqBIvESBSNvpjw90o41FskzTfypGc_Fqw1RN7P2ruq/s320/small_red.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
too red...&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Wednesday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU9TV37AH1z5LuqbcpUbcg3prq1wNQ-kjW9zP3xBCHB8SFMMXvfMSwt57Sw0iHQHdCQO6NyKCw9R7OUVyfmYEDitKyK6GNfaF_zdrZbRZnAJTT0LBgZ6bXNUUy98hFriTrbBtq01R-RhOz/s1600/small_purple.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgU9TV37AH1z5LuqbcpUbcg3prq1wNQ-kjW9zP3xBCHB8SFMMXvfMSwt57Sw0iHQHdCQO6NyKCw9R7OUVyfmYEDitKyK6GNfaF_zdrZbRZnAJTT0LBgZ6bXNUUy98hFriTrbBtq01R-RhOz/s320/small_purple.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
too purple...&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Thursday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0wgv7FUr_bna3cU5KwfvR8hpaMlCbpFSLN9eVeb2Oei3QOxGCN3pUPJl2dZ6usbD5lVjGYu4YhiUIceLofo0Wh4LqzRiERa_mY41sJB4pqU8ZeYr95H1LRScB2yffZbCkyd27jXmckvXF/s1600/small_blue.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;295&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0wgv7FUr_bna3cU5KwfvR8hpaMlCbpFSLN9eVeb2Oei3QOxGCN3pUPJl2dZ6usbD5lVjGYu4YhiUIceLofo0Wh4LqzRiERa_mY41sJB4pqU8ZeYr95H1LRScB2yffZbCkyd27jXmckvXF/s320/small_blue.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
too blue ...&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Friday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivb0B8oJoQlkefw5ytlNCZJb4lVpcKjDfTuWidw5TIw48SC-im0pL3vNWuCsaMTFdNydoMqBhhWXFnn0ZsLwN-CRsA6JJqQAfJPxgjYFJFwbezRRJTw40rgB_SkhodKeZz_Mj6ocHX_XhZ/s1600/small_green.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivb0B8oJoQlkefw5ytlNCZJb4lVpcKjDfTuWidw5TIw48SC-im0pL3vNWuCsaMTFdNydoMqBhhWXFnn0ZsLwN-CRsA6JJqQAfJPxgjYFJFwbezRRJTw40rgB_SkhodKeZz_Mj6ocHX_XhZ/s320/small_green.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
too green ....&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Saturday:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVBE3aF12ragoZGZli04rpq04o899JJf2JKwK5b8Dj_mEYMVSrb58M_XqNpf4F6K-F57FJgQtROi2leoQ2aiEhEK1TLc_P6CExOvqT-mIk1Ga4WEooa786t-7Wrl5l1I4U2Vx2yCJnIRHh/s1600/small_grey.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;293&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVBE3aF12ragoZGZli04rpq04o899JJf2JKwK5b8Dj_mEYMVSrb58M_XqNpf4F6K-F57FJgQtROi2leoQ2aiEhEK1TLc_P6CExOvqT-mIk1Ga4WEooa786t-7Wrl5l1I4U2Vx2yCJnIRHh/s320/small_grey.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
just right! And that&#39;s enough painting for this year.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/6703434327183028090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/07/painting-garage-door.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6703434327183028090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6703434327183028090'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/07/painting-garage-door.html' title='Painting the garage door'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdeqRSikGeOuo9guM_XGnRM5kNJLIE6RlzgGvQD0mk0JeV5NY4pTDdlusOGIrAanFMTnkYHRoK7WcQl6bnKvO4K59AbD-QS6Gwd2oz-SuCF1OiqK1sL5KnRcPrxgPtNBVgH2iwZ2RqEbU2/s72-c/small_yellow.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-6228580364706881654</id><published>2016-03-05T09:32:00.000+00:00</published><updated>2016-03-05T10:07:09.853+00:00</updated><title type='text'>  Linux on the Ockel Sirius B - part 2</title><content type='html'>It works!&lt;br /&gt;
&lt;br /&gt;
Use the EUFI update that is included with the Ubuntu instructions on &lt;a href=&quot;http://www.ockelproducts.com/support/#a6857fbe0003d9f3e&quot;&gt;http://www.ockelproducts.com/support/#a6857fbe0003d9f3e&lt;/a&gt; to convert to a 64 bit UEFI. Now you can install a normal distro. Running Fedora Core 23, to get wireless working i did a modprobe on brcmfmac. I also copied the firmware from the Ockel website, not sure if that is required.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/6228580364706881654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/03/linux-on-ockel-sirius-b-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6228580364706881654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6228580364706881654'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/03/linux-on-ockel-sirius-b-part-2.html' title='  Linux on the Ockel Sirius B - part 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-6672297830304400880</id><published>2016-03-04T18:36:00.001+00:00</published><updated>2016-03-05T08:20:17.007+00:00</updated><title type='text'>Linux on the Ockel Sirius B - part 1</title><content type='html'>Initially i thought this was going to be easy, unfortunately all distros i tried to boot from gave me exactly the same result: EUFI 32bit shell. Never ever booted from the usb stick.&lt;br /&gt;
&lt;br /&gt;
Finally found these two posts:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://blogs.intel.com/evangelists/2015/07/22/why-cheap-systems-run-32-bit-uefi-on-x64-systems/&quot;&gt;https://blogs.intel.com/evangelists/2015/07/22/why-cheap-systems-run-32-bit-uefi-on-x64-systems/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.intel.com/evangelists/2015/08/11/update-on-ia32-uefi-and-linux-support/&quot;&gt;http://blogs.intel.com/evangelists/2015/08/11/update-on-ia32-uefi-and-linux-support/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Copied Debian Multiarch 8 on a usb stick using dd (from &lt;a href=&quot;http://cdimage.debian.org/debian-cd/current/multi-arch/iso-dvd/&quot;&gt;http://cdimage.debian.org/debian-cd/current/multi-arch/iso-dvd/&lt;/a&gt; )&lt;br /&gt;
&lt;br /&gt;
Switch off secure boot.&lt;br /&gt;
&lt;br /&gt;
So now for the first time i got past the eufi shell!&lt;br /&gt;
&lt;br /&gt;
Install runs ok, didn&#39;t find a network device (should be wireless), boots but doesn&#39;t go into graphics. Log in and startx doesn&#39;t seem to make it very happy: looks like the graphics mode is on,but still shows the prompt. Not that it does anything. I can switch to other terminal using ctrl+alt+Fx.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Update: saw that there is info on the Ockel website on how to do this: &lt;a href=&quot;http://www.ockelproducts.com/support/#a6857fbe0003d9f3e&quot;&gt;http://www.ockelproducts.com/support/#a6857fbe0003d9f3e&lt;/a&gt; will give that a shot later!</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/6672297830304400880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/03/linux-on-ockel-sirius-b-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6672297830304400880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6672297830304400880'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2016/03/linux-on-ockel-sirius-b-part-1.html' title='Linux on the Ockel Sirius B - part 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-6083761874460960983</id><published>2014-07-19T20:21:00.001+01:00</published><updated>2014-07-19T20:21:36.096+01:00</updated><title type='text'>Riding to work with the Rubbee</title><content type='html'>First i did a test run last Sunday to the office (approx 15 miles) and after a short break back again:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;to work 70 minutes&lt;/li&gt;
&lt;li&gt;back home 70 minutes&lt;/li&gt;
&lt;li&gt;only put the Rubbee on the wheel for the uphill sections, so had still a little bit spare when i got home&lt;/li&gt;
&lt;li&gt;very nice ride: cloudy with 2 minutes of drizzle when i started out, sunny by the time i got to the office. Could have done with more water. No backpack.&lt;/li&gt;
&lt;li&gt;on wet sections the noise the Rubbee made was quite bad ... slipping over the knobbly bits of the tire i guess.&lt;/li&gt;
&lt;/ul&gt;
Wednesday was the first for real:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;to work 66 minutes, ran out of power just before the office (200m)&lt;/li&gt;
&lt;li&gt;back home 64 minutes, ran out of power about a mile from home&lt;/li&gt;
&lt;li&gt;using the Rubbee almost 75% of the time, only taking it off the wheel for the downhill sections&lt;/li&gt;
&lt;li&gt;couldn&#39;t get my rhythm until i was almost at the office, just not used to exercise that early in the morning i guess...&lt;/li&gt;
&lt;li&gt;cooler than Sumday on the way back&lt;/li&gt;
&lt;li&gt;my front light warns that it&#39;s getting low on power after about 40 minutes by switching the indicator from green to orange, it is however still bright at the end of ride &lt;/li&gt;
&lt;li&gt;also changed from knobbly tires to road tires (for a second i was tempted to go for near slicks ... but the roads are pretty bad so i went for a bit more sensible ones.&lt;/li&gt;
&lt;li&gt;first time with a backpack, may also have contributed to the not so pleasant ride in, i haven&#39;t ridden with a backpack for ages.&lt;/li&gt;
&lt;/ul&gt;
Friday:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;to work 68 minutes&lt;/li&gt;
&lt;li&gt;back home 67 minutes&lt;/li&gt;
&lt;li&gt;much better rider in, despite the roads being wet and me getting rather muddy,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;the way back was harder as it was hot! The backpack did not help...&lt;/li&gt;
&lt;li&gt;drawback in the wet was that the Rubbee started slipping when i put on more power (seemed ok to keep the same speed). &lt;/li&gt;
&lt;li&gt;forgot the recharge the front light, got home and it was still orange (and quite bright) &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
The Rubbee starts to run with much less resistance than when it was new, hope this continues to improve as it slows you down quite a bit. that&#39;s the reason for taking it off the wheel on the downhill sections, the cost is about two minutes each time and you have to slowback, wait for a gap between cars before you can accelerate.&lt;br /&gt;
&lt;br /&gt;
Number of stops:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;five on the way to work (for Wednesday and Friday)&lt;/li&gt;
&lt;li&gt;four on the way back (again Wednesday and Friday only) &lt;/li&gt;
&lt;/ul&gt;
So there is the potential to shave off ten to twelve minutes on the way to work and eight to 10 on the way back, but only if the Rubbee runs near-frictionless (assumption is that there is a 30 second loss on slowing down and accelerating).&lt;br /&gt;
55 minutes each way sounds tempting... can the Rubbee do it or do i need a real electric mountain bike. I&#39;d need to leave the car and the the ebike a thousand times to break even ... need to find a better reason than just financial i guess.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/6083761874460960983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/07/riding-to-work-with-rubbee.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6083761874460960983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6083761874460960983'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/07/riding-to-work-with-rubbee.html' title='Riding to work with the Rubbee'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-2680199470060450415</id><published>2014-05-06T20:38:00.003+01:00</published><updated>2014-05-06T20:57:04.458+01:00</updated><title type='text'>Never lose the locking pin on my Rubbee again!</title><content type='html'>On a long down hill section (public road in Surrey, rather bumpy due to the potholes) i had my &lt;a href=&quot;http://www.rubbee.co.uk/&quot;&gt;Rubbee&lt;/a&gt; off the back wheel. And at the bottom it was on my wheel ... somewhere along the way i&#39;d lost the locking pin (and i wasn&#39;t in the mood to cycle back up).&lt;br /&gt;
&lt;br /&gt;
Never again! Here is my solution (ignore the yellow bits, that clip is just temporary until i find the one i want to use again... same for the temporary &#39;locking pin&#39;, i&#39;m not going to ride with that!):&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitvJYNZncgAeqR9qiGzv2OhYY5LJw2T-iLsf-gByrO8AM97wXkb1t6ijSI_eUx6LH9M25uAwwauYZ7EohVxfLTFwP7jUl3qovHqR3ZUJLy3Q9yP2jArTmvYAsLR7FmCMIvbD_tEHwJQV3i/s1600/rubbee1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitvJYNZncgAeqR9qiGzv2OhYY5LJw2T-iLsf-gByrO8AM97wXkb1t6ijSI_eUx6LH9M25uAwwauYZ7EohVxfLTFwP7jUl3qovHqR3ZUJLy3Q9yP2jArTmvYAsLR7FmCMIvbD_tEHwJQV3i/s1600/rubbee1.jpeg&quot; height=&quot;211&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijwxLMVhcrlGWZ8dD8ACVHgnwA6g073VIEOmY2NxUvYyhJBSDmByEuHW2E_wEENAwqI2LTOmI1OQRSHfSR9OmFUj54qA7Ognn_X3jZkxsc1t_NHUIeQ736h8awgHzAlYumEe5Rl7BB7kxp/s1600/rubbee2.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijwxLMVhcrlGWZ8dD8ACVHgnwA6g073VIEOmY2NxUvYyhJBSDmByEuHW2E_wEENAwqI2LTOmI1OQRSHfSR9OmFUj54qA7Ognn_X3jZkxsc1t_NHUIeQ736h8awgHzAlYumEe5Rl7BB7kxp/s1600/rubbee2.jpeg&quot; height=&quot;247&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Clip it through the ring of the locking pin, so that if it falls out again i can just pop it back in.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/2680199470060450415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/05/never-lose-locking-pin-on-my-rubbee.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2680199470060450415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2680199470060450415'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/05/never-lose-locking-pin-on-my-rubbee.html' title='Never lose the locking pin on my Rubbee again!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEitvJYNZncgAeqR9qiGzv2OhYY5LJw2T-iLsf-gByrO8AM97wXkb1t6ijSI_eUx6LH9M25uAwwauYZ7EohVxfLTFwP7jUl3qovHqR3ZUJLy3Q9yP2jArTmvYAsLR7FmCMIvbD_tEHwJQV3i/s72-c/rubbee1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-4398547884687126414</id><published>2014-01-06T11:46:00.000+00:00</published><updated>2014-01-06T11:46:23.402+00:00</updated><title type='text'>Accessing IR-Blue-DM from linux</title><content type='html'>Note: do the initial tests with the bluetooth dongle straight on the machine (Udoo in my case) instead of plugged in a hub. Scanning works on a hub but for some reason rfcomm doesn&#39;t connect very often if the dongle is on a hub.&lt;br /&gt;
&lt;br /&gt;
Quick hack #1:&lt;br /&gt;
&lt;br /&gt;
Check if we can see the device: &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;root@imx6-qsdl:/home/ubuntu# hcitool scan&lt;/span&gt;&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;Scanning ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; EC:FE:xx:xx:xx:xx &amp;nbsp;&amp;nbsp; IR-Blue-DM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;
Same using LE: &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;root@imx6-qsdl:/home/ubuntu# hcitool lescan&lt;br /&gt;LE Scan ...&lt;br /&gt;EC:FE:xx:xx:xx:xx&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;Check if we need a pin: &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;root@imx6-qsdl:/home/ubuntu# bluez-simple-agent hci0 EC:FE:xx:xx:xx:xx&lt;br /&gt;Release&lt;br /&gt;New device (/org/bluez/5683/hci0/dev_EC_FE_xx_xx_xx_xx)&lt;/span&gt;&lt;br /&gt;
Seems we don&#39;t need one, connect using rfcomm. &lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;root@imx6-qsdl:/home/ubuntu# rfcomm connect hci0 EC:FE:xx:xx:xx:xx &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;Connected /dev/rfcomm0 to EC:FE:xx:xx:xx:xx on channel 1&lt;br /&gt;Press CTRL-C for hangup&lt;br /&gt;^CDisconnected&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;See if there is any data:&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;root@imx6-qsdl:/home/ubuntu# cat /dev/rfcomm0&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
And after you do &#39;echo &amp;gt;/dev/rfcomm0 &quot;R001\r\n&quot;&#39; in another terminal there is data!: &lt;br /&gt;E211208208208215214212212218220218213222223221218223223221216224225223220227226225222226227225223228228227225229229228225229228229228229230230228230230229230230230231230230230229229227229227227188188188188205205196196205205205196205205205205213205205205205213205205213213213205213213213205213213222213222222222213222222222222222222222222222222222222222222222222222222222222213222222222&amp;nbsp; 0 17 17 10 41 62 62 52 79 86 96 90103121124107131152159138159162169148169183183155179186186162179193193159176190190165176186183148172172176131151158158120124138145 96103107110 65 69 75 68 23255255255255255255255255255255&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0216221205&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 0&amp;nbsp; 8150 26 17 93105 36230 79 40 34&amp;nbsp; 0128&amp;nbsp; 0&amp;nbsp; 0255 33&amp;nbsp; 0188 26190 59 25245 27150 26255 30116 91166 32136 44 10 33&amp;nbsp; 1 26EX&lt;br /&gt;&lt;br /&gt;R144006836145-00045I&amp;nbsp;&amp;nbsp; -54&amp;nbsp;&amp;nbsp; -54&amp;nbsp;&amp;nbsp; -52&amp;nbsp;&amp;nbsp; -54&amp;nbsp;&amp;nbsp; -53&amp;nbsp;&amp;nbsp; -54&amp;nbsp;&amp;nbsp; -51&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -52&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -52&amp;nbsp;&amp;nbsp; -49&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -49&amp;nbsp;&amp;nbsp; -47&amp;nbsp;&amp;nbsp; -51&amp;nbsp;&amp;nbsp; -51&amp;nbsp;&amp;nbsp; -51&amp;nbsp;&amp;nbsp; -49&amp;nbsp;&amp;nbsp; -52&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -48&amp;nbsp;&amp;nbsp; -48&amp;nbsp;&amp;nbsp; -50&amp;nbsp;&amp;nbsp; -45&amp;nbsp;&amp;nbsp; -47&amp;nbsp;&amp;nbsp; -45&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -44&amp;nbsp;&amp;nbsp; -41&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -45&amp;nbsp;&amp;nbsp; -27&amp;nbsp;&amp;nbsp; -41&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -44&amp;nbsp;&amp;nbsp; -40&amp;nbsp;&amp;nbsp; -41&amp;nbsp;&amp;nbsp; -41&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -44&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -43&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -41&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -40&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -42&amp;nbsp;&amp;nbsp; -41X&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Quick hack #2:&lt;br /&gt;
&lt;br /&gt;
Use a small python routine to read data:&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;import serial&lt;br /&gt;import time&lt;br /&gt;&lt;br /&gt;ser=serial.Serial(&quot;/dev/rfcomm0&quot;, baudrate=57600,timeout=0.1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;ser.open()&lt;br /&gt;ser.write(&quot;R001&quot;+chr(13)+chr(10))&lt;br /&gt;&lt;br /&gt;while (1==1):&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;&quot;&gt;&amp;nbsp;d=ser.readline()&lt;br /&gt;&amp;nbsp;print len(d),d&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Success! Now to write something that gets temperature values and shows the result graphically...&lt;br /&gt;
&lt;br /&gt;
I found the R001 command in the android code on &lt;a href=&quot;http://github.com/RHWorkshop&quot;&gt;http://github.com/RHWorkshop&lt;/a&gt; , the H command can be used to increase the speed at which the data is sent.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/4398547884687126414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/01/accessing-ir-blue-dm-from-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/4398547884687126414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/4398547884687126414'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2014/01/accessing-ir-blue-dm-from-linux.html' title='Accessing IR-Blue-DM from linux'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-4950622986730869648</id><published>2013-08-24T12:19:00.002+01:00</published><updated>2013-08-24T12:19:21.379+01:00</updated><title type='text'>Teamviewer - using aliases</title><content type='html'>I really like &lt;a href=&quot;http://www.teamviewer.com/&quot;&gt;teamviewer&lt;/a&gt; (free for personal use), after creating an account and running it on most of my machines and my android tablet the one thing i couldn&#39;t find easily figure out was why one of my machines had a human readable name and all the others showed up with just the teamviewer id.&lt;br /&gt;
&lt;br /&gt;
The annoying thing is that only the machine with the human readable name has an option to change its properties and the others only allow me to connect to them. Googled for an answer for ages, must be a typical case of me searching using the wrong keywords or nobody else trying to do this...&lt;br /&gt;
&lt;br /&gt;
Finally after messing around for ages i found that i had to add the machines manually in computers and contacts (not logical as they&#39;re in my list already...), then you get the option to add an alias (grumble: why do have to type in the teamviewer id - would like to see a rightclick option for that).&lt;br /&gt;
&lt;br /&gt;
Great now i&#39;ll be able to connect to the correct machine in one go without having to memorize the teamview id.&lt;br /&gt;
&lt;br /&gt;
As a &#39;benefit&#39; the machines are now listed twice: directly in the &#39;my computer&#39; list and once under my account. And there must be some logic as to why the machines show up yellow (idle) under the account but green (active) in the &#39;my computer&#39; list.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/4950622986730869648/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/08/teamviewer-using-aliases.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/4950622986730869648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/4950622986730869648'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/08/teamviewer-using-aliases.html' title='Teamviewer - using aliases'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-3549550173258194902</id><published>2013-07-03T17:16:00.002+01:00</published><updated>2013-07-03T17:16:31.805+01:00</updated><title type='text'>Key-fob is sorted, can we do the same for URUK WiFi Router Module (Arduino Compatible)</title><content type='html'>Cool! The Pi-Lite key-fob (see yesterday&#39;s post:&lt;a href=&quot;http://n1c0la5-co-uk.blogspot.co.uk/2013/07/get-pi-lite-and-well-all-pi-lite-key.html&quot;&gt;Get a Pi Lite and we&#39;ll all a Pi Lite key-fob as a bonus!&lt;/a&gt;) should be happening as they went over £10K today.&lt;br /&gt;
&lt;br /&gt;
Can we do the same for &lt;a href=&quot;http://www.kickstarter.com/projects/1761474145/uruk-wifi-router-module-arduino-compatible&quot;&gt;URUK WiFi Router Module (Arduino Compatible)&lt;/a&gt; , i&#39;d like to get one of those ... currently at just over $6K, there is another week to get it funded at $10K.</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/3549550173258194902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/07/key-fob-is-sorted-can-we-do-same-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3549550173258194902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3549550173258194902'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/07/key-fob-is-sorted-can-we-do-same-for.html' title='Key-fob is sorted, can we do the same for URUK WiFi Router Module (Arduino Compatible)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-8346294669182963932</id><published>2013-07-02T18:39:00.000+01:00</published><updated>2013-07-02T18:39:22.509+01:00</updated><title type='text'>Get a Pi Lite and we&#39;ll all a Pi Lite key-fob as a bonus!</title><content type='html'>There is always something interesting on Kickstarter...&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.kickstarter.com/projects/ciseco/pi-lite-white-bright-white-led-display-for-raspber&quot;&gt;Pi Lite white - Bright white LED display for Raspberry Pi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If they reach £10K (easy, the project is over £9 already) we&#39;ll all get the Pi Lite acrylic key-fob as a bonus, so go on get one!</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/8346294669182963932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/07/get-pi-lite-and-well-all-pi-lite-key.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8346294669182963932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8346294669182963932'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/07/get-pi-lite-and-well-all-pi-lite-key.html' title='Get a Pi Lite and we&#39;ll all a Pi Lite key-fob as a bonus!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-8316216756588798282</id><published>2013-04-26T21:58:00.001+01:00</published><updated>2013-04-26T22:00:43.860+01:00</updated><title type='text'>Don&#39;t have a 3D printer yet? Do something about it!</title><content type='html'>A couple of Kickstarters worth looking at:&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;http://www.kickstarter.com/projects/1650950769/rigidbot-3d-printer/widget/video.html&quot; frameborder=&quot;0&quot;&gt; &lt;/iframe&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.kickstarter.com/projects/1650950769/rigidbot-3d-printer&quot;&gt;Rigidbot&lt;/a&gt;&amp;nbsp;(build volume: 10&quot;x10&quot;x10&quot; / &amp;nbsp;25.4x25.4x25.4cm or 12&quot;x16&quot;x10&quot; / 30x40x25.4cm)&lt;br /&gt;
Some people are worried that they&#39;re not going to reach all their stretch goals... The initial goal was only $31.5k, now to get the heated print bed they need 31.7x that, currently they at almost 60%. You can make it happen!&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;http://www.kickstarter.com/projects/sasan/cyrus-open-source-3d-printer/widget/video.html&quot; frameborder=&quot;0&quot;&gt; &lt;/iframe&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.kickstarter.com/projects/sasan/cyrus-open-source-3d-printer&quot;&gt;Cyrus&lt;/a&gt;&amp;nbsp;(build volume: 10&quot;x11&quot;x12&quot;)&lt;br /&gt;
Almost half way to the goal, looks great. Like shiny things? Like Swarovski gems? Then go for the Great Reward whilst it&#39;s still available. Don&#39;t forget to add the heated bed, lcd and dual extruder!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So you choice is simple: get a&amp;nbsp;&lt;a href=&quot;http://www.kickstarter.com/projects/1650950769/rigidbot-3d-printer&quot;&gt;Rigidbot&lt;/a&gt;. Or a&amp;nbsp;&lt;a href=&quot;http://www.kickstarter.com/projects/sasan/cyrus-open-source-3d-printer&quot;&gt;Cyrus&lt;/a&gt;. Or a couple of both. Or 31 Cyruses / 750 t-shirts! Come on, what are you waiting for?&lt;br /&gt;
&lt;br /&gt;
&lt;iframe width=&quot;480&quot; height=&quot;360&quot; src=&quot;http://www.kickstarter.com/projects/companje/doodle3d/widget/video.html&quot; frameborder=&quot;0&quot;&gt; &lt;/iframe&gt;36
&lt;br /&gt;
And whilst you&#39;re at it don&#39;t forget to get a couple of these:&amp;nbsp;&lt;a href=&quot;http://www.kickstarter.com/projects/companje/doodle3d&quot;&gt;Doodle 3D&lt;/a&gt;&amp;nbsp;Wireless 3d printing and a way to get the kids hooked also (kids: sell it to mom and dad as an educational tool and you&#39;ll get to play with the 3d printer once they&#39;re bored with it), what more can you ask for?</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/8316216756588798282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/04/dont-have-3d-printer-yet-do-something.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8316216756588798282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8316216756588798282'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/04/dont-have-3d-printer-yet-do-something.html' title='Don&#39;t have a 3D printer yet? Do something about it!'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-5386262055149694355</id><published>2013-01-11T18:21:00.004+00:00</published><updated>2013-01-11T18:21:49.171+00:00</updated><title type='text'>Arduino + Canbus shield + GPS Receiver - update 1</title><content type='html'>A quick update on my&amp;nbsp;&lt;a href=&quot;http://n1c0la5-co-uk.blogspot.co.uk/2012/07/arduino-canbus-shield-gps-receiver.html&quot;&gt;Arduino + Canbus shield + GPS Receiver&lt;/a&gt;&amp;nbsp;post from last year.&lt;br /&gt;
&lt;br /&gt;
I had this plan to put the files in a sub folder in order to make sure that i would hit the limit to the number of files in the root of the file system, added a bit of code that would create up to a thousand files. Somehow it didn&#39;t work: didn&#39;t want to write in the sub folder...&lt;br /&gt;
&lt;br /&gt;
But why use separate files anyway? The files will be evaluated on my main machine, it&#39;s easy enough for it to split the file. That simplifies the code a lot:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;void start_new_file(void)&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;digitalWrite(LED2, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;// we want to add to the end of the file file and flush manually for performance and to be nice to the sd card&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;file = SD.open(&quot;DATA.TXT&quot;, O_READ | O_APPEND | O_WRITE);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;&amp;nbsp;digitalWrite(LED2, LOW);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: x-small;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;Also spotted the post&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://arduino.cc/forum/index.php/topic,49649.0.html&quot;&gt;Why is the SD library slow?&lt;/a&gt;&amp;nbsp;and decided to flush the file manually. Performance isn&#39;t really an issue but fewer writes to the SD won&#39;t hurt! I flush before checking for the click.&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/5386262055149694355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/01/arduino-canbus-shield-gps-receiver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/5386262055149694355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/5386262055149694355'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2013/01/arduino-canbus-shield-gps-receiver.html' title='Arduino + Canbus shield + GPS Receiver - update 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-3207979058614253542</id><published>2012-10-29T18:11:00.002+00:00</published><updated>2012-10-29T18:11:16.302+00:00</updated><title type='text'>Android development</title><content type='html'>Ages ago i had a look at Google&#39;s development environment, found it rather complex and then it was discontinued.&lt;br /&gt;
&lt;br /&gt;
Today i stumbled over some documentation based on &lt;a href=&quot;http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_HowTo.html&quot;&gt;http://www3.ntu.edu.sg/home/ehchua/programming/android/Android_HowTo.html&lt;/a&gt;&amp;nbsp;which again was more complicated than it need to be.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
My steps:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;install JDK from &lt;a href=&quot;http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html&quot;&gt;http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;install Eclipse Classic 4.2.1 from&amp;nbsp;&lt;a href=&quot;http://www.eclipse.org/downloads/&quot;&gt;http://www.eclipse.org/downloads/&lt;/a&gt;&amp;nbsp;and untar&lt;/li&gt;
&lt;li&gt;run eclipse and from&amp;nbsp;Help -&amp;gt; Install New Software -&amp;gt; Add add&amp;nbsp;&lt;a href=&quot;https://dl-ssl.google.com/android/eclipse/&quot;&gt;https://dl-ssl.google.com/android/eclipse/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;restart eclipse when it asks for it&lt;/li&gt;
&lt;li&gt;from Windows -&amp;gt; Android SDK Manager install the tools, the android versions you&#39;re interested in etc&lt;/li&gt;
&lt;li&gt;now you can create a virtual android device from Windows -&amp;gt; AVD Manager.&lt;/li&gt;
&lt;/ol&gt;
</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/3207979058614253542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/10/android-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3207979058614253542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3207979058614253542'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/10/android-development.html' title='Android development'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-2190721262317924307</id><published>2012-09-29T08:42:00.000+01:00</published><updated>2012-10-27T09:44:54.240+01:00</updated><title type='text'>64 core supercomputer for $199</title><content type='html'>Four weeks to go to raise $750k (over $80k already in two days). Get yours in May 2013 for $99:&lt;br /&gt;
http://www.kickstarter.com/projects/adapteva/parallella-a-supercomputer-for-everyone&lt;br /&gt;
&lt;br /&gt;
20121003: Ah, not 64 core is it said in the title, &#39;only&#39; 16. Still worthwhile! Or get two for $199 ... but how much is a 64core version going to be? Over $150k in six days, still on track to achieve the goal.&lt;br /&gt;
&lt;br /&gt;
20121004: Ok, back to 64 core in the title now there is an option to get 64cores! Not yet on track to achieve that one - not even on track for the $750k ... looks like it&#39;ll be $35k too low.&lt;br /&gt;
&lt;br /&gt;
20121027: Wow, funding was reached. Didn&#39;t think that was going to happy, funding currently stands at $780K and still half a day to go ... not likely that we&#39;ll reach $3m (to get 64 cores) but then i didn&#39;t think we&#39;d reach $750k. Who knows, may still happen!</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/2190721262317924307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/09/64-core-supercomputer-for-99.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2190721262317924307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2190721262317924307'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/09/64-core-supercomputer-for-99.html' title='64 core supercomputer for $199'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-8680883155218667010</id><published>2012-07-19T17:29:00.002+01:00</published><updated>2012-07-20T07:16:20.158+01:00</updated><title type='text'>Raspberry Pi - Raspbian, Wheezy &amp; sound</title><content type='html'>&lt;a href=&quot;http://www.raspberrypi.org/archives/1605&quot;&gt; first SD card image based on the Raspbian distribution&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Good:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;based on Wheezy,&lt;/li&gt;
&lt;li&gt;ssh enabled by default,&lt;/li&gt;
&lt;li&gt;raspi-config makes it easy to extend the image to the entire sd card, configure how much memory goes to graphics etc.,&lt;/li&gt;
&lt;li&gt;sound driver is loaded automatically,&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Bad:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;can&#39;t get audio to work from python-pyao, doesn&#39;t want to open any device i tried, even installed pulse (but audio isn&#39;t broken as mpg123 works fine...).&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/8680883155218667010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/07/raspberry-pi-raspbian-squeeze-sound.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8680883155218667010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8680883155218667010'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/07/raspberry-pi-raspbian-squeeze-sound.html' title='Raspberry Pi - Raspbian, Wheezy &amp; sound'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-8820190908693674830</id><published>2012-07-09T18:14:00.002+01:00</published><updated>2012-07-16T07:30:36.828+01:00</updated><title type='text'>Arduino + Canbus shield + GPS Receiver</title><content type='html'>&lt;br /&gt;
Ingredients:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;a href=&quot;http://robosavvy.com/store/product_info.php/products_id/1238&quot;&gt;SparkFun - Arduino CAN-BUS OBDII Kit with LCD&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;a href=&quot;http://robosavvy.com/store/product_info.php/products_id/536&quot;&gt;SparkFun - Break Away Headers - Straight&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
Also required:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;soldering iron&lt;/li&gt;
&lt;li&gt;patience &amp;amp; basic soldering skills (to solder the headers onto the Canbus shield)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://arduino.cc/&quot;&gt;arduino software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;computer, car/van etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Things to keep in mind:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;when you want to stop logging: press on the joystick until the leds go out so that the file on the sd card is properly closed&lt;/li&gt;
&lt;li&gt;make sure to reset if you plugin before starting the engine, not all pids are available at that point&lt;/li&gt;
&lt;li&gt;with the engine off my engine runs at 280 rpm...&lt;/li&gt;
&lt;li&gt;powered from the canbus, so i disconnect before leaving the vehicle in case it would drain the battery&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Still todo:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;solder on the lcd display, build an interface that shows fuel consumption&lt;/li&gt;
&lt;li&gt;see if there is a more efficient way to log all available sensors (on startup &amp;nbsp;check which pids are available and then log all of the available ones)&lt;/li&gt;
&lt;li&gt;print a case&lt;/li&gt;
&lt;li&gt;sleep mode: if the engine is off (or rpm is 280 for a couple of times in a row), switch all leds off, switch off the gps (if possible), check every n seconds if the engine was started etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
The code (still in progress...):&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;/* Welcome to the ECU Reader project. This sketch uses the Canbus library.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;It requires the CAN-bus shield for the Arduino. This shield contains the MCP2515 CAN controller and the MCP2551 CAN-bus driver.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;A connector for an EM406 GPS receiver and an uSDcard holder with 3v level convertor for use in data logging applications.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;The output data can be displayed on a serial LCD.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;The SD test functions requires a FAT16 formated card with a text file of LOG00.TXT in the card.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;SK Pang Electronics www.skpang.co.uk&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;v4.0 04-03-12 Updated for Arduino 1.0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;v3.0 21-02-11 &amp;nbsp;Use library from Adafruit for sd card instead.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;*/&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#include &amp;lt;SD.h&amp;gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Library from Adafruit.com */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;//#include &amp;lt;SdFatUtil.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#include &amp;lt;SoftwareSerial.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#include &amp;lt;Canbus.h&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;Sd2Card card;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;SdVolume volume;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;SdFile root;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;SdFile file;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;/* Define Joystick connection */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define UP &amp;nbsp; &amp;nbsp; A1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define RIGHT &amp;nbsp;A2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define DOWN &amp;nbsp; A3&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define CLICK &amp;nbsp;A4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define LEFT &amp;nbsp; A5&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;char buffer[512]; &amp;nbsp;//Data will be temporarily stored to this buffer before being written to the file&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;char tempbuf[15];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;int read_size=0; &amp;nbsp; //Used as an indicator for how many characters are read from the file&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;int D10 = 10;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;int LED2 = 8;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;int LED3 = 7;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;SoftwareSerial mySerial = &amp;nbsp;SoftwareSerial(4, 5);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;//#define COMMAND 0xFE&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define powerpin 4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define GPSRATE 4800&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;//#define GPSRATE 38400&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// GPS parser for 406a&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;#define BUFFSIZ 90 // plenty big&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;//char buffer[BUFFSIZ];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;char *parseptr;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;char buffidx;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;uint32_t tmp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;unsigned char gpsexit;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;void setup() {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(LED2, OUTPUT);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(LED3, OUTPUT);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(LED2, LOW);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(UP,INPUT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(DOWN,INPUT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(LEFT,INPUT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(RIGHT,INPUT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; pinMode(CLICK,INPUT);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(UP, HIGH); &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Enable internal pull-ups */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(DOWN, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(LEFT, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(RIGHT, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; digitalWrite(CLICK, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; mySerial.begin(GPSRATE);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; delay(1000);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.begin(9600); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;/* Setup serial LCD and clear the screen */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;clear_lcd();&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.print(&quot;CANBUS&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.write(COMMAND);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.write(LINE1);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.print(&quot;Logging&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; //loop();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;void loop(void)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// clear_lcd();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; //if(Canbus.init(CANSPEED_500)) &amp;nbsp;/* Initialise MCP2515 CAN controller at the specified speed */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// &amp;nbsp; sLCD.print(&quot;CAN Init ok&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// } else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// &amp;nbsp; sLCD.print(&quot;Can&#39;t init CAN&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// }&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;Canbus.init(CANSPEED_500);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; delay(500);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;clear_lcd();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.print(&quot;Init SD card&quot;); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; delay(500);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;clear_lcd();&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.print(&quot;Press J/S click&quot;); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;sLCD.write(COMMAND);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// sLCD.write(LINE1); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; /* Move LCD cursor to line 1 */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp; sLCD.print(&quot;to Stop&quot;);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // anything goes wrong, wait forever...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // initialize the SD card at SPI_HALF_SPEED to avoid bus errors with&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // breadboards. &amp;nbsp;use SPI_FULL_SPEED for better performance.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; if (!card.init(SPI_HALF_SPEED,9)) while(1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // initialize a FAT volume&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; if (!volume.init(&amp;amp;card)) while(1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // open the root directory&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; if (!root.openRoot(&amp;amp;volume)) while(1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // create a new file&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; char name[] = &quot;LOG00.TXT&quot;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; for (uint8_t i = 0; i &amp;lt; 100; i++) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; name[3] = i/10 + &#39;0&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; name[4] = i%10 + &#39;0&#39;;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if (file.open(&amp;amp;root, name, O_CREAT | O_EXCL | O_WRITE)) break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; if (!file.isOpen()) while(1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;// Serial.print(&quot;Writing to: &quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;// &amp;nbsp;Serial.println(name);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // write header&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; int supported_pids[]={PID_SUPPORTED_00,PID_SUPPORTED_20,PID_SUPPORTED_40,PID_SUPPORTED_60,PID_SUPPORTED_80,PID_SUPPORTED_A0,PID_SUPPORTED_C0};&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; file.print(&quot;PIDs supported:&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; file.println(); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; for (uint8_t i=0; i&amp;lt;(sizeof(supported_pids)/sizeof(int)); i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;if(Canbus.ecu_req(supported_pids[i],buffer) == 1) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; file.print(buffer);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;file.print(&#39;,&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; file.print(&quot;Logging started....&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; file.println(); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; int pids[]={ENGINE_RPM,VEHICLE_SPEED,ENGINE_COOLANT_TEMP,THROTTLE,CALC_ENG_LOAD_VAL,FUEL_PRESSURE,INTAKE_MAN_ABS_PRESS,INTAKE_AIR_TEMP,RUNTIME_SINCE_START,FUEL_LEVEL_INPUT,BAR_PRESS,ENG_OIL_TEMP,ENG_FUEL_RATE,DRIVER_DEMAND_ENG_TORQ,ACTUAL_ENG_TORQ};&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; while(1) &amp;nbsp; &amp;nbsp;/* Main logging loop */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;/* gps */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;gpsexit=0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;digitalWrite(LED2, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;while(gpsexit==0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; readline();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if ((strncmp(buffer, &quot;$GPRMC&quot;,6) == 0) or &amp;nbsp;(strncmp(buffer, &quot;$GPGGA&quot;,6) == 0))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;digitalWrite(LED2, LOW);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;gpsexit=1;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; } &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;file.print(buffer);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;file.println(); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;/* canbus &amp;amp;*/ &amp;nbsp; digitalWrite(LED3, HIGH);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;for (uint8_t i=0; i&amp;lt;(sizeof(pids)/sizeof(int)); i++)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; if(Canbus.ecu_req(pids[i],buffer) == 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;file.print(buffer);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; }&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; file.print(&#39;,&#39;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;} &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;file.println(); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;digitalWrite(LED3, LOW);&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;if (digitalRead(CLICK) == 0)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;{ &amp;nbsp;/* Check for Click button */&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; file.print(&quot;Logging ended....&quot;);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; file.println(); &amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; file.close();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; while(1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;void readline(void) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; char c;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; buffidx = 0; // start at begninning&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; while (1) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; c=mySerial.read();&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (c == -1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; // &amp;nbsp; &amp;nbsp;Serial.print(c);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if (c == &#39;\n&#39;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; continue;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; if ((buffidx == BUFFSIZ-1) || (c == &#39;\r&#39;)) {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; buffer[buffidx] = 0;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; return;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; buffer[buffidx++]= c;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Modified Canbus library (only showing the bits between &quot;switch(message.data[2])&lt;span style=&quot;background-color: white;&quot;&gt;&quot; and &quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;message_ok = 1;&quot;)&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;:&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;{ &amp;nbsp; /* Details from http://en.wikipedia.org/wiki/OBD-II_PIDs */&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case ENGINE_RPM: &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;// &amp;nbsp; ((A*256)+B)/4 &amp;nbsp; &amp;nbsp;[RPM]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;((message.data[3]*256) + message.data[4])/4;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%04d rpm&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case ENGINE_COOLANT_TEMP: &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;// &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;A-40&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt; &amp;nbsp;[degree C]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;message.data[3] - 40;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%03d C&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case VEHICLE_SPEED: &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;// A&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt; &amp;nbsp;[km]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;message.data[3];&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%03d km&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case MAF_SENSOR: &amp;nbsp; &lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;   &lt;/span&gt;// ((256*A)+B) / 100 &amp;nbsp;[g/s]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;((message.data[3]*256) + message.data[4])/100;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d g/s&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case O2_VOLTAGE: &amp;nbsp; &amp;nbsp;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;  &lt;/span&gt;// A * 0.005 &amp;nbsp; (B-128) * 100/128&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = message.data[3]*0.005;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d v&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case THROTTLE:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;// Throttle Position&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = (message.data[3]*100)/255;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%03d %%&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;case PID_SUPPORTED_00:&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;00 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_20:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;20 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_40:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;40 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_60:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;60 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_80:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;80 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_A0:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;A0 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case PID_SUPPORTED_C0:&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;    &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;C0 %d %d&quot;,message.data[3],message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;break;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;       &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case CALC_ENG_LOAD_VAL:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]*100)/256;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d %%&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case FUEL_PRESSURE:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]*3);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d kPa &quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case INTAKE_MAN_ABS_PRESS :&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]*1);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d &amp;nbsp; kPa &quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case INTAKE_AIR_TEMP:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]-40);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d C&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;case RUNTIME_SINCE_START: &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;((message.data[3]*256) + message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d s&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case FUEL_LEVEL_INPUT:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]*100)/256;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d %%&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case BAR_PRESS:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d kPa&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case ENG_OIL_TEMP:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]-40);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d C&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case ENG_FUEL_RATE:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]*100)*0.05;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d L/h&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case DRIVER_DEMAND_ENG_TORQ:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]-125);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d %%&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;case ACTUAL_ENG_TORQ:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;(message.data[3]-125);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d %%&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;case ENG_REF_TORQ: &amp;nbsp; &lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt;   &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;engine_data = &amp;nbsp;((message.data[3]*256) + message.data[4]);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;sprintf(buffer,&quot;%d Nm&quot;,(int) engine_data);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;background-color: white; white-space: pre;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;break;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt;      &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/8820190908693674830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/07/arduino-canbus-shield-gps-receiver.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8820190908693674830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8820190908693674830'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/07/arduino-canbus-shield-gps-receiver.html' title='Arduino + Canbus shield + GPS Receiver'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-7465594052809322875</id><published>2012-06-24T13:39:00.004+01:00</published><updated>2012-07-09T17:48:48.576+01:00</updated><title type='text'>Raspberry Pi - alsa</title><content type='html'>Install alsa:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sudo apt-get alsa&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
and make sure that the module is loaded:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;sudo modprobe snd-bcm2835&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/7465594052809322875/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/raspberry-pi-alsa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/7465594052809322875'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/7465594052809322875'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/raspberry-pi-alsa.html' title='Raspberry Pi - alsa'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-5525719201003018058</id><published>2012-06-23T17:45:00.000+01:00</published><updated>2012-06-23T17:45:59.842+01:00</updated><title type='text'>Raspberry Pi - ssh</title><content type='html'>&lt;br /&gt;
&lt;div&gt;
Using the Debian squeeze image from &lt;a href=&quot;http://www.raspberrypi.org/downloads&quot;&gt;http://www.raspberrypi.org/downloads&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I&#39;d like to be able to run it headless, need ssh running automatically after boot:&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;ssh-keygen (answer the prompts)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sudo update-rc.d ssh default&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;sudo reboot&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
or&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;background-color: white;&quot;&gt;cd /boot&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;sudo mv boot_enable_ssh.rc boot.rx&lt;/li&gt;
&lt;li&gt;sudo reboot&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;br /&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/5525719201003018058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/raspberry-pi-ssh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/5525719201003018058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/5525719201003018058'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/raspberry-pi-ssh.html' title='Raspberry Pi - ssh'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-2593218814603917507</id><published>2012-06-17T18:08:00.002+01:00</published><updated>2012-06-17T20:42:36.326+01:00</updated><title type='text'>Robot hand from seven parts - 2 (some photos)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiId7keSJN_3xPPYHs2qSgwu14DsMZWT-CNnvslf-wHVVG3n3cN4opwBlhpvou_bGMMMZw__YCyPKXSINVYMGH9_2GMyQOvWCCxvCsTSvnO_S7LhlW0alUAT5p9kUp-0lKaiF7WU-NiAhDs/s1600/IMG_0671.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiId7keSJN_3xPPYHs2qSgwu14DsMZWT-CNnvslf-wHVVG3n3cN4opwBlhpvou_bGMMMZw__YCyPKXSINVYMGH9_2GMyQOvWCCxvCsTSvnO_S7LhlW0alUAT5p9kUp-0lKaiF7WU-NiAhDs/s320/IMG_0671.jpg&quot; width=&quot;309&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJX00_q2KEcEX6H-gN06tVJLeTjbVzgyvtjY094J5hrGHzAtvsJqHfaFonNpxstr1_rJyPDXyQnGm6VHyZWQ_jVS6xxwp5so6OaqSQPcLmTBrJ2x1ZoJA5N8D0yrdrnCWVoMGKW1GdIk26/s1600/IMG_0672.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJX00_q2KEcEX6H-gN06tVJLeTjbVzgyvtjY094J5hrGHzAtvsJqHfaFonNpxstr1_rJyPDXyQnGm6VHyZWQ_jVS6xxwp5so6OaqSQPcLmTBrJ2x1ZoJA5N8D0yrdrnCWVoMGKW1GdIk26/s320/IMG_0672.jpg&quot; width=&quot;221&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe0oGEAujLhUrIS3g1kSvPeYeX1-H2WOkQzAySBzXZZJISZfYKYB0FxdxsgvdjlVwvOsl8eJXPMRRM3XxLSxEZunGraJbCv5JLqrUcSpQdYqP-3xWPB9R9Fm__irdO8AT6imeBb5Sec-1Y/s1600/IMG_0673.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhe0oGEAujLhUrIS3g1kSvPeYeX1-H2WOkQzAySBzXZZJISZfYKYB0FxdxsgvdjlVwvOsl8eJXPMRRM3XxLSxEZunGraJbCv5JLqrUcSpQdYqP-3xWPB9R9Fm__irdO8AT6imeBb5Sec-1Y/s320/IMG_0673.jpg&quot; width=&quot;226&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga79OIQ10wY1x6C2tw5xI5BtbUAl6XVZ7-WjnvzE6C3uRSMlAAIcg0UDPvA3a9s4QbkWk6dKikhKBejHFlcLZY5WgUwbq6CRfkEg2eiilGHeoLQHnmCaXFPevtzHmgBMGqjGN5G6KqHRDt/s1600/IMG_0674.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEga79OIQ10wY1x6C2tw5xI5BtbUAl6XVZ7-WjnvzE6C3uRSMlAAIcg0UDPvA3a9s4QbkWk6dKikhKBejHFlcLZY5WgUwbq6CRfkEg2eiilGHeoLQHnmCaXFPevtzHmgBMGqjGN5G6KqHRDt/s320/IMG_0674.jpg&quot; width=&quot;298&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijwCn_LpmQedclFqMFFUCdFzpNttrbObj1kApKEkcNQOSN3J1DSradBz4lAelIKsWZYbXxUzJ3sJSfvPAmRPOjd4TsNzj3OCVmkxPPy3efrm6WWtp2iYYzSdzFYJx3MPU0RWbe1eD5pumu/s1600/IMG_0675.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEijwCn_LpmQedclFqMFFUCdFzpNttrbObj1kApKEkcNQOSN3J1DSradBz4lAelIKsWZYbXxUzJ3sJSfvPAmRPOjd4TsNzj3OCVmkxPPy3efrm6WWtp2iYYzSdzFYJx3MPU0RWbe1eD5pumu/s320/IMG_0675.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi__TTV6ltQHGiEn2UIMXAeG-3aXjNFhg2uJPKfKVoM5-o4NSNS4LA2gDAolCVslJgctYkxAiPNk9hPnMgI-N8r5vBD_Pw11aUenGuFkLRM-iHqWmmaCitXDzRTKxNX4YObrigcuvzLfGim/s1600/IMG_0676.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi__TTV6ltQHGiEn2UIMXAeG-3aXjNFhg2uJPKfKVoM5-o4NSNS4LA2gDAolCVslJgctYkxAiPNk9hPnMgI-N8r5vBD_Pw11aUenGuFkLRM-iHqWmmaCitXDzRTKxNX4YObrigcuvzLfGim/s320/IMG_0676.jpg&quot; width=&quot;255&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDYpZgc2fq7-Tx9uPH7EKDBYPcnG6WhTVzKwhxzWwbKjOjhJretwMUKPnYkliA4EKiLwtboJz5vNEIKiDd130vBFBvH86OVKyuL1MOCVviMw53ZtKBPSUBKfAGxhzrIJaZR178LfGKSotj/s1600/IMG_0677.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDYpZgc2fq7-Tx9uPH7EKDBYPcnG6WhTVzKwhxzWwbKjOjhJretwMUKPnYkliA4EKiLwtboJz5vNEIKiDd130vBFBvH86OVKyuL1MOCVviMw53ZtKBPSUBKfAGxhzrIJaZR178LfGKSotj/s320/IMG_0677.jpg&quot; width=&quot;316&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix33g_HZkUVgLUZ38aF4viqDgAZcbkTRfkIpU-yXnWG_M1k2FHQnR-bQUoC8I5-qlsqAHbqcJat3frucv3b8le92KPZ7DU3tMyg6GFYSjMyeBF1sZcGdIkYPljDB3WgtkGZlVgWwJib5lk/s1600/IMG_0678.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix33g_HZkUVgLUZ38aF4viqDgAZcbkTRfkIpU-yXnWG_M1k2FHQnR-bQUoC8I5-qlsqAHbqcJat3frucv3b8le92KPZ7DU3tMyg6GFYSjMyeBF1sZcGdIkYPljDB3WgtkGZlVgWwJib5lk/s320/IMG_0678.jpg&quot; width=&quot;309&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aMS2zdHpKUasKRLZEz87TFy1R9o2EOFcnQpa84CtWZdQggxq-wFqxY1n3Rl48lHFYNaIHK9F2m7e-EfXsM5kcZkQCIEQPSP0rAY8Znpx5runjbu1xymdGEv1FwgiHC0N6FKTO7qRQZD4/s1600/IMG_0679.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;318&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0aMS2zdHpKUasKRLZEz87TFy1R9o2EOFcnQpa84CtWZdQggxq-wFqxY1n3Rl48lHFYNaIHK9F2m7e-EfXsM5kcZkQCIEQPSP0rAY8Znpx5runjbu1xymdGEv1FwgiHC0N6FKTO7qRQZD4/s320/IMG_0679.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2LeKpgzLEcgz_DiVcItlLIhofV4Jrzry__Y4C98nQhTlpW1UXtvlGINtpUeIJlWMA91u0P2c2Gp7tVy8K2HC65ChJydvH7oV6IbJUpPCgW1NUxaWSRhk31HFt4IgC9VXBMTi8VzwII6qf/s1600/IMG_0680.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2LeKpgzLEcgz_DiVcItlLIhofV4Jrzry__Y4C98nQhTlpW1UXtvlGINtpUeIJlWMA91u0P2c2Gp7tVy8K2HC65ChJydvH7oV6IbJUpPCgW1NUxaWSRhk31HFt4IgC9VXBMTi8VzwII6qf/s320/IMG_0680.jpg&quot; width=&quot;231&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The finger bend both ways: the finger tips can therefore are either pads or sharp.&lt;br /&gt;
&lt;br /&gt;
From the base of the wrist to the tip of a finger is about 27cm. If i ever get to build the entire robot it&#39;ll be approx 2m70 high...</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/2593218814603917507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/robot-hand-from-seven-part-2-some.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2593218814603917507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/2593218814603917507'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/robot-hand-from-seven-part-2-some.html' title='Robot hand from seven parts - 2 (some photos)'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiId7keSJN_3xPPYHs2qSgwu14DsMZWT-CNnvslf-wHVVG3n3cN4opwBlhpvou_bGMMMZw__YCyPKXSINVYMGH9_2GMyQOvWCCxvCsTSvnO_S7LhlW0alUAT5p9kUp-0lKaiF7WU-NiAhDs/s72-c/IMG_0671.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-1617048645925109384</id><published>2012-06-17T17:48:00.001+01:00</published><updated>2012-06-17T21:04:22.362+01:00</updated><title type='text'>Robot hand from seven parts - 1</title><content type='html'>Take one or more of each of the following parts, snap or friction fit them together and you get a robot hand!&lt;br /&gt;
&lt;br /&gt;
Snap the first two together to create a rotating joint:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4w9gHh58AqMrbXiZ7GClMJBF96MwsEZyffbL-DQFvhWkHXFjsypIw2JGXFyYqXzJRHRKDaX6rd4knN_9pD13RoPcgDkLoWJIsnccRsfexqmcmbNDqpFe4KQpXf01PG-ipYmpU5roH1o2-/s1600/hand1.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4w9gHh58AqMrbXiZ7GClMJBF96MwsEZyffbL-DQFvhWkHXFjsypIw2JGXFyYqXzJRHRKDaX6rd4knN_9pD13RoPcgDkLoWJIsnccRsfexqmcmbNDqpFe4KQpXf01PG-ipYmpU5roH1o2-/s1600/hand1.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFgLxYQItKwzfAGp7HEmliWMnaQDCqxcPK0_pgsGgtqlCXjQOs8lrZkpPC7kLw-7tZFZwD72bp0TceOr2Un-gV_eTLs_5ZxIgJXJaj5eg9GlgDW8N2L3n4jOHim8aV9IQ8v5o7X22WKV3S/s1600/hand2.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;227&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFgLxYQItKwzfAGp7HEmliWMnaQDCqxcPK0_pgsGgtqlCXjQOs8lrZkpPC7kLw-7tZFZwD72bp0TceOr2Un-gV_eTLs_5ZxIgJXJaj5eg9GlgDW8N2L3n4jOHim8aV9IQ8v5o7X22WKV3S/s320/hand2.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Hold a couple of those together with a connection piece and you get finger:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJ-PpG7QaU7Iiho1NZR0ZFEvBXDGBi-8lOYlMYtF3vumgaxJ3wbRyFymJWwDsYV3GKWdevALiCFSnX3KsH0re0RP2ppeqoVzJnICxhmVpQQWQkIoc9yecL0qsO3pry8f6SM_PfN8ZbWf5/s1600/hand3.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;247&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJ-PpG7QaU7Iiho1NZR0ZFEvBXDGBi-8lOYlMYtF3vumgaxJ3wbRyFymJWwDsYV3GKWdevALiCFSnX3KsH0re0RP2ppeqoVzJnICxhmVpQQWQkIoc9yecL0qsO3pry8f6SM_PfN8ZbWf5/s320/hand3.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
At one end of the finger place a finger tip:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Sguv4id39pJVoAM53w_fOl9v3y_jZTKDSs4nQH2B32w4ABddFDPdGATHBdrOYdzQS_rovIhmhO_eIqjT4aWyOy_3Tjk7orpsbUS-Xa7TrrhSFwSKfFR1PH6nZnBaDu5dYhLoThDghh1W/s1600/hand7.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;193&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Sguv4id39pJVoAM53w_fOl9v3y_jZTKDSs4nQH2B32w4ABddFDPdGATHBdrOYdzQS_rovIhmhO_eIqjT4aWyOy_3Tjk7orpsbUS-Xa7TrrhSFwSKfFR1PH6nZnBaDu5dYhLoThDghh1W/s320/hand7.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Give the thumb an additional degree of rotation:&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEithwZkrqypThqzUfZFJv1L-5nQ_-1l0A8ilNVJcC-Bie3bK2ZKEAdDtlxezwq4sbsXB80ElwpBNbWAI4mkgTAFBezkERS-Y9JDDDuJrmfA9XqiDES5Ii_LcJ10rJfMkIajYSEs_l-1K5lT/s1600/hand5.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEithwZkrqypThqzUfZFJv1L-5nQ_-1l0A8ilNVJcC-Bie3bK2ZKEAdDtlxezwq4sbsXB80ElwpBNbWAI4mkgTAFBezkERS-Y9JDDDuJrmfA9XqiDES5Ii_LcJ10rJfMkIajYSEs_l-1K5lT/s320/hand5.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&amp;nbsp;Use a spacer between the fingers...&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh6ZSUtcGkRGnKKXEFOBF8L8N3Cwc9RFEWVVF-gsjLgXRp2SiQmOb33OnBhUjtNAuKO-xX98Kn5Mb_plfQnRDVvXUnbEDxE1cNG1TWs9t9Dar16Qr1Z0iV9cg6AOQaQ-WHjLpcDQrHDRPc/s1600/hand6.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh6ZSUtcGkRGnKKXEFOBF8L8N3Cwc9RFEWVVF-gsjLgXRp2SiQmOb33OnBhUjtNAuKO-xX98Kn5Mb_plfQnRDVvXUnbEDxE1cNG1TWs9t9Dar16Qr1Z0iV9cg6AOQaQ-WHjLpcDQrHDRPc/s1600/hand6.jpeg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
when you slide them on the wrist, then snap the thumb on and the hand is ready.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJDlBRX3q7O6rBOgnffqa-k168I7SSWLZEwPSFPp3JCQ8g4jT3788QV2VQRgiwzX67h0RTf2MorM5RP3EJA89mcRCDo7CapVnHLH_pRMu0YNXsp0w4gEe_x0MWJ_O-J3pMVH4Sf_WusN9/s1600/hand4.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJDlBRX3q7O6rBOgnffqa-k168I7SSWLZEwPSFPp3JCQ8g4jT3788QV2VQRgiwzX67h0RTf2MorM5RP3EJA89mcRCDo7CapVnHLH_pRMu0YNXsp0w4gEe_x0MWJ_O-J3pMVH4Sf_WusN9/s320/hand4.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Partslists:&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Part 1&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;80&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4w9gHh58AqMrbXiZ7GClMJBF96MwsEZyffbL-DQFvhWkHXFjsypIw2JGXFyYqXzJRHRKDaX6rd4knN_9pD13RoPcgDkLoWJIsnccRsfexqmcmbNDqpFe4KQpXf01PG-ipYmpU5roH1o2-/s200/hand1.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;
&lt;td&gt;Part 2&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;70&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFgLxYQItKwzfAGp7HEmliWMnaQDCqxcPK0_pgsGgtqlCXjQOs8lrZkpPC7kLw-7tZFZwD72bp0TceOr2Un-gV_eTLs_5ZxIgJXJaj5eg9GlgDW8N2L3n4jOHim8aV9IQ8v5o7X22WKV3S/s200/hand2.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;&lt;td&gt;Part 3&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;77&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGJ-PpG7QaU7Iiho1NZR0ZFEvBXDGBi-8lOYlMYtF3vumgaxJ3wbRyFymJWwDsYV3GKWdevALiCFSnX3KsH0re0RP2ppeqoVzJnICxhmVpQQWQkIoc9yecL0qsO3pry8f6SM_PfN8ZbWf5/s200/hand3.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;&lt;td&gt;Part 4&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;60&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2Sguv4id39pJVoAM53w_fOl9v3y_jZTKDSs4nQH2B32w4ABddFDPdGATHBdrOYdzQS_rovIhmhO_eIqjT4aWyOy_3Tjk7orpsbUS-Xa7TrrhSFwSKfFR1PH6nZnBaDu5dYhLoThDghh1W/s200/hand7.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Part 5&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;67&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEithwZkrqypThqzUfZFJv1L-5nQ_-1l0A8ilNVJcC-Bie3bK2ZKEAdDtlxezwq4sbsXB80ElwpBNbWAI4mkgTAFBezkERS-Y9JDDDuJrmfA9XqiDES5Ii_LcJ10rJfMkIajYSEs_l-1K5lT/s200/hand5.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;&lt;td&gt;Part 6&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhh6ZSUtcGkRGnKKXEFOBF8L8N3Cwc9RFEWVVF-gsjLgXRp2SiQmOb33OnBhUjtNAuKO-xX98Kn5Mb_plfQnRDVvXUnbEDxE1cNG1TWs9t9Dar16Qr1Z0iV9cg6AOQaQ-WHjLpcDQrHDRPc/s200/hand6.jpeg&quot; width=&quot;100&quot; /&gt;&lt;/td&gt;&lt;td&gt;Part 7&lt;/td&gt;&lt;td&gt;&lt;img border=&quot;0&quot; height=&quot;152&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqJDlBRX3q7O6rBOgnffqa-k168I7SSWLZEwPSFPp3JCQ8g4jT3788QV2VQRgiwzX67h0RTf2MorM5RP3EJA89mcRCDo7CapVnHLH_pRMu0YNXsp0w4gEe_x0MWJ_O-J3pMVH4Sf_WusN9/s320/hand4.jpeg&quot; width=&quot;160&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finger:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Part 1 : 3&lt;/li&gt;
&lt;li&gt;Part 2 : 3&lt;/li&gt;
&lt;li&gt;Part 3 : 3&lt;/li&gt;
&lt;li&gt;Part 4 : 1&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Thumb:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Part 1 : 4&lt;/li&gt;
&lt;li&gt;Part 2 : 4&lt;/li&gt;
&lt;li&gt;Part 3 : 4&lt;/li&gt;
&lt;li&gt;Part 4 : 1&lt;/li&gt;
&lt;li&gt;Part 5 :1&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Hand:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Part 1 : 16&lt;/li&gt;
&lt;li&gt;Part 2 : 16&lt;/li&gt;
&lt;li&gt;Part 3 : 16&lt;/li&gt;
&lt;li&gt;Part 4 : 5&lt;/li&gt;
&lt;li&gt;Part 5 : 3&lt;/li&gt;
&lt;li&gt;Part 6 : 4&lt;/li&gt;
&lt;li&gt;Part 7 : 1&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/1617048645925109384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/robot-hand-from-seven-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/1617048645925109384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/1617048645925109384'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/06/robot-hand-from-seven-part-1.html' title='Robot hand from seven parts - 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4w9gHh58AqMrbXiZ7GClMJBF96MwsEZyffbL-DQFvhWkHXFjsypIw2JGXFyYqXzJRHRKDaX6rd4knN_9pD13RoPcgDkLoWJIsnccRsfexqmcmbNDqpFe4KQpXf01PG-ipYmpU5roH1o2-/s72-c/hand1.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-3394654706628648743</id><published>2012-05-16T20:31:00.000+01:00</published><updated>2012-05-16T20:31:19.419+01:00</updated><title type='text'>Installing SImpleOpenNI for an Asus Xtion</title><content type='html'>&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;follow the instructions from&amp;nbsp;&lt;a href=&quot;http://code.google.com/p/simple-openni/wiki/Installation&quot;&gt;simple-openni/wiki/Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;OpenNI installs very quickly, on to Nite&lt;/li&gt;
&lt;li&gt;which fails with a &quot;
&lt;span class=&quot;bold highlight search-highlight&quot;&gt;niReg&lt;/span&gt;: &lt;span class=&quot;bold highlight search-highlight&quot;&gt;error&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;while&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;loading&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;shared&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;libraries&lt;/span&gt;: &lt;span class=&quot;bold highlight search-highlight&quot;&gt;libOpenNI&lt;/span&gt;.&lt;span class=&quot;bold highlight search-highlight&quot;&gt;so&lt;/span&gt;: &lt;span class=&quot;bold highlight search-highlight&quot;&gt;cannot&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;open&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;shared&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;object&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;file&lt;/span&gt;: &lt;span class=&quot;bold highlight search-highlight&quot;&gt;No&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;such&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;file&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;or&lt;/span&gt; &lt;span class=&quot;bold highlight search-highlight&quot;&gt;directory&lt;/span&gt;.&quot;&quot; error&amp;nbsp;&lt;/li&gt;
&lt;li&gt;but the file is there! Google for it: reboot or run 
&quot;ldconfig -v&quot;, 
&quot;ldconfig -v&quot; it is&lt;/li&gt;
&lt;li&gt;now Nite installs&lt;/li&gt;
&lt;li&gt;install the Sensor&lt;/li&gt;
&lt;li&gt;and &#39;install&#39; SimpleOpenNI = copy the files across - easy!&lt;/li&gt;
&lt;li&gt;and then we go and find some sample code to run!&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/3394654706628648743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/05/installing-simpleopenni-for-asus-xtion.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3394654706628648743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/3394654706628648743'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/05/installing-simpleopenni-for-asus-xtion.html' title='Installing SImpleOpenNI for an Asus Xtion'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-6289308911218529260</id><published>2012-04-21T13:58:00.001+01:00</published><updated>2012-04-21T13:58:34.119+01:00</updated><title type='text'>Upgrading the firmware on my Ultimaker</title><content type='html'>I&#39;ve never looked much at upgrading the firmware on my Ultimaker and the few times i did try it never worked... Up to now that&#39;s never been an issue ... but i just ordered an &lt;a href=&quot;https://shop.ultimaker.com/en/parts-and-upgrades/ulticontroller-ultipanel.html&quot;&gt;Ultimaker Controller&lt;/a&gt;. And that requires Marlin: &quot;For older firmwares you should upload new firmware&quot;. So it&#39;s time to get the firmware updated!&lt;br /&gt;
&lt;br /&gt;
Let&#39;s try one more time:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;check the docs at&amp;nbsp;&lt;a href=&quot;http://wiki.ultimaker.com/How_to_upload_new_firmware_to_the_motherboard&quot;&gt;wiki.ultimaker How_to_upload_new_firmware_to_the_motherboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;get the latest Ultimaker version of replicatorg&amp;nbsp;&lt;a href=&quot;http://software.ultimaker.com/&quot;&gt;version 3 from software.ultimaker.com&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
And it still fails...&lt;br /&gt;
&lt;br /&gt;
When it fails it tells you to look at the console, so better do that: it complains about not being able to access my usb port /dev/ttyACM0, as there is a problem with the lock file. Ok, that&#39;s easy: delete the lock file (maybe it&#39;s left behind for some reason...).&lt;br /&gt;
&lt;br /&gt;
Nope, doesn&#39;t like that either, but there is progress! Instead of complaining about the lock file it&#39;s now getting timeouts.&lt;br /&gt;
&lt;br /&gt;
Time for another look in the console, it shows the command it&#39;s trying to run. Hmm, let&#39;s kill replicatorg and run the command: &amp;nbsp;avrdude -Cavrdude.conf -cstk500v2 -P/dev/ttyACM0 -b115200 -D ... (all paths are stripped from this example, i just copied and pasted the command from the console without any editing).&lt;br /&gt;
&lt;br /&gt;
And that works!</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/6289308911218529260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/04/upgrading-firmware-on-my-ultimaker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6289308911218529260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/6289308911218529260'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/04/upgrading-firmware-on-my-ultimaker.html' title='Upgrading the firmware on my Ultimaker'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-556382427327364589</id><published>2012-03-13T17:42:00.000+00:00</published><updated>2012-03-25T15:43:46.302+01:00</updated><title type='text'>Roomba &amp; Rootooth</title><content type='html'>Just got a &lt;a href=&quot;http://robosavvy.com/store/product_info.php/manufacturers_id/17../products_id/698&quot;&gt;Rootooth&lt;/a&gt; for my Roomba and initially it didn&#39;t work! (so yes indeed, that means that eventually i got it working)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Step one: is my bluetooth dongle working?&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;# hciconfig hci0&lt;br /&gt;&lt;br /&gt;hci0:   Type: BR/EDR  Bus: USB        BD Address: 01:23:45:67:89:01  ACL MTU: 1021:8  SCO MTU: 64:1 &lt;br /&gt;RX bytes:290 acl:0 sco:0 events:6 errors:0        &lt;br /&gt;TX bytes:21 acl:0 sco:0 commands:7 errors:0&lt;br /&gt;UP RUNNING&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
&lt;br /&gt;
Yes!&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Step two: can i see the roomba?&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;# hcitool scan&lt;br /&gt;Scanning ...&lt;br /&gt;Inquiry failed: Connection timed out&lt;/span&gt;&lt;/blockquote&gt;
No...&lt;br /&gt;
&lt;br /&gt;
Ok, maybe reset the bluetooth adapter?&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;# hciconfig hci0 reset&lt;br /&gt;# hcitool scan &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;Scanning ... &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 00:11:22:33:44:55 &amp;nbsp; &amp;nbsp; &amp;nbsp; FireFly-176B &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
That&#39;s more like it.&lt;br /&gt;
&lt;br /&gt;
Step three: connect it using rfcomm&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;#rfcomm connect 5 00:11:22:33:44:55&lt;br /&gt;Connected /dev/rfcomm5 to 00:11:22:33:44:55 on channel 1&lt;br /&gt;Press CTRL-C for hangup&lt;/span&gt;&lt;/blockquote&gt;
&lt;div&gt;
Ok, so now i can send commands to it using serial in python as it says in the &lt;a href=&quot;http://www.irobot.com/images/consumer/hacker/Roomba_SCI_Spec_Manual.pdf&quot;&gt;SCI Specs&lt;/a&gt;! And yes i can send whatever i want. Unfortunately the Roomba isn&#39;t impressed. At all.&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
At least until i stumbled across&amp;nbsp;&lt;a href=&quot;http://solidcoding.blogspot.com/2008/07/python-library-for-roomba-sci.html&quot;&gt;python-library-for-roomba-sci.html&lt;/a&gt;&amp;nbsp;and now it works fine. Seems to be related to the fact that it likes money (send it dollars and you&#39;re in business:&amp;nbsp;&lt;span style=&quot;font-family: &#39;Courier New&#39;, Courier, monospace; font-size: x-small;&quot;&gt;self.port.write(&quot;$$$&quot;)&lt;/span&gt;).</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/556382427327364589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/03/roomba-rootooth.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/556382427327364589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/556382427327364589'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/03/roomba-rootooth.html' title='Roomba &amp; Rootooth'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-8095581235364421444</id><published>2012-02-27T21:45:00.000+00:00</published><updated>2012-02-27T21:53:51.695+00:00</updated><title type='text'>Filament spool holder for Makerbot ToM</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
A couple of simple parts to hold the spool over the ToM.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLpcaqoUpOxMI4soDxBDNGVwdbBcMhvrVOJDEBinMHTU8IeyuF9wBy_JoIy5_B37BIJUI-MS0g3VBdWRl9un4Du91pehRQgMZbGACRHW-IAF0KVZzT-bKafUF0vzbr9es1lYpor5wmHI6R/s1600/IMG_0581.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;241&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLpcaqoUpOxMI4soDxBDNGVwdbBcMhvrVOJDEBinMHTU8IeyuF9wBy_JoIy5_B37BIJUI-MS0g3VBdWRl9un4Du91pehRQgMZbGACRHW-IAF0KVZzT-bKafUF0vzbr9es1lYpor5wmHI6R/s320/IMG_0581.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
The feet that fit the holes in the top of a ToM with some space to feed cables through. Mirror them so that you have at least one with the opening on the left and one on the right. The other two don&#39;t matter as there aren&#39;t any cables comes out the holes where the fit in.&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs9pxvoAItn6ghyphenhyphenwscM5u-Sv2_nETXvRmjoj3IEQBSD_grx3YnbdIjaqDTNfCzByoxQs_HDmovJA4kfhU0m-3VsEsW8-FIpF0x6ccJg4lfLxk3_vL8O6DDKshPzXw4OenRpNf0JBaCxH5L/s1600/nh800.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;217&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgs9pxvoAItn6ghyphenhyphenwscM5u-Sv2_nETXvRmjoj3IEQBSD_grx3YnbdIjaqDTNfCzByoxQs_HDmovJA4kfhU0m-3VsEsW8-FIpF0x6ccJg4lfLxk3_vL8O6DDKshPzXw4OenRpNf0JBaCxH5L/s320/nh800.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.n1c0la5.co.uk/3dprinting/nh800.scad&quot;&gt;nh800 (OpenSCAD)&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://www.n1c0la5.co.uk/3dprinting/nh800.stl&quot;&gt;nh800 (stl)&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
The top corners.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWNHY-lpHvX8hxMZnqNM2CwFJzZCvm0pwuxDuzF5-g0g-sJ2V2aygMl-vkcgC9BgcS24wtlf92ymbYEsFP0jVV6X91AhP3n-Hsnk4wtIWjGZj7WlzZPzxdqChTKGQiG7JtqCv9vK1vLQrk/s1600/nh601d.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; display: inline !important; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWNHY-lpHvX8hxMZnqNM2CwFJzZCvm0pwuxDuzF5-g0g-sJ2V2aygMl-vkcgC9BgcS24wtlf92ymbYEsFP0jVV6X91AhP3n-Hsnk4wtIWjGZj7WlzZPzxdqChTKGQiG7JtqCv9vK1vLQrk/s320/nh601d.jpg&quot; width=&quot;281&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://www.n1c0la5.co.uk/3dprinting/nh601d.scad&quot;&gt;nh601d (OpenSCAD)&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://www.n1c0la5.co.uk/3dprinting/nh601d.stl&quot;&gt;nh601d (stl)&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
I&#39;ve printed the parts with different fill settings: 0, 30 and 50. All seem ok, the horizontal holes weren&#39;t completely round:&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;there was some warping, which caused the holes to be too small - printed again with less warping,&lt;/li&gt;
&lt;li&gt;the top of the horizontal holes is tricky as it printed these along the axis, in free space, they work fine after a bit of cleanup.&lt;/li&gt;
&lt;/ol&gt;
As you can see in the pictures you&#39;ll need four feet and two corners.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
Cut some pvc tubing to the right length, i&#39;ve used something like 4x 17cm and 1x 32cm (should be at least 27cm). Done!&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
Some additional pictures:&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJCP-oq0FirfgeJ9S2e3hiU3pAItwFEN5VbFbyBB-nXelGsDA9IECojC19sEEQbpfZauK1yoN823r43pCmse6JpOUHcn1lIvgeSmR-H4h0eY7CtviAwVReI7PGrkfTy9CKdKw3a_oBbrO/s1600/IMG_0579.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;221&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOJCP-oq0FirfgeJ9S2e3hiU3pAItwFEN5VbFbyBB-nXelGsDA9IECojC19sEEQbpfZauK1yoN823r43pCmse6JpOUHcn1lIvgeSmR-H4h0eY7CtviAwVReI7PGrkfTy9CKdKw3a_oBbrO/s320/IMG_0579.jpg&quot; style=&quot;cursor: move;&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3lc5l4f3rlubmPRVlTuVSyc5mq1t0DVOsC2tWryj7vcO0iOzKfrUlL54HEGNRzPlkKNXq6mtte9-nOl_KYIChpVcKXzgbHzMVuqkkGrV_V-77M2e1M2E3R8jVpBCLLL6mWd7Z8n0lRqf6/s1600/IMG_0580.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;264&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3lc5l4f3rlubmPRVlTuVSyc5mq1t0DVOsC2tWryj7vcO0iOzKfrUlL54HEGNRzPlkKNXq6mtte9-nOl_KYIChpVcKXzgbHzMVuqkkGrV_V-77M2e1M2E3R8jVpBCLLL6mWd7Z8n0lRqf6/s320/IMG_0580.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Get OpenSCAD from &lt;a href=&quot;http://www.openscad.org/&quot;&gt;www.OpenSCAD.org&lt;/a&gt;&lt;br /&gt;
Printed from &lt;a href=&quot;http://code.google.com/p/replicatorg/downloads/detail?name=replicatorg-0029_r2-linux.tgz&amp;amp;can=2&amp;amp;q=&quot;&gt;replicatorg-0029_r2 on linux&lt;/a&gt;&amp;nbsp;(just saw 0031 was released today)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/8095581235364421444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/02/filament-spool-holder-for-makerbot-tom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8095581235364421444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/8095581235364421444'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2012/02/filament-spool-holder-for-makerbot-tom.html' title='Filament spool holder for Makerbot ToM'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLpcaqoUpOxMI4soDxBDNGVwdbBcMhvrVOJDEBinMHTU8IeyuF9wBy_JoIy5_B37BIJUI-MS0g3VBdWRl9un4Du91pehRQgMZbGACRHW-IAF0KVZzT-bKafUF0vzbr9es1lYpor5wmHI6R/s72-c/IMG_0581.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7419927519330936752.post-9051708527835613811</id><published>2011-10-15T13:37:00.001+01:00</published><updated>2011-10-15T13:37:09.751+01:00</updated><title type='text'>3d printing and IP</title><content type='html'>Some interesting articles about 3d printing and IP:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/tech-policy/news/2011/04/the-next-napster-copyright-questions-as-3d-printing-comes-of-age.ars&quot;&gt;the-next-napster-copyright-questions-as-3d-printing-comes-of-age.ars&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://thoughts-on-copyright-questions-as-3d-printing-comes-of-age.html/&quot;&gt;Thoughts-on-copyright-questions-as-3D-printing-comes-of-age.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
Where is it heading? Check out a couple of SF books/writers:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fantasticfiction.co.uk/d/cory-doctorow/&quot;&gt;Cory Doctorow&lt;/a&gt; - &lt;a href=&quot;http://www.fantasticfiction.co.uk/d/cory-doctorow/makers.htm&quot;&gt;Makers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fantasticfiction.co.uk/s/charles-stross/&quot;&gt;Charles Stross&lt;/a&gt; - &lt;a href=&quot;http://www.fantasticfiction.co.uk/s/charles-stross/rule-34.htm&quot;&gt;Rule 34&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://n1c0la5-co-uk.blogspot.com/feeds/9051708527835613811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2011/10/3d-printing-and-ip.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/9051708527835613811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7419927519330936752/posts/default/9051708527835613811'/><link rel='alternate' type='text/html' href='http://n1c0la5-co-uk.blogspot.com/2011/10/3d-printing-and-ip.html' title='3d printing and IP'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>