<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;A0MDQXs5eyp7ImA9WhRaGUo.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308</id><updated>2012-02-22T22:44:30.523-08:00</updated><title>auzieman</title><subtitle type="html">Robotics, Embedded Linux, Arduino, Python, C++ and more</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://auzieman.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>29</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Auzieman" /><feedburner:info uri="auzieman" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DEUFRHw8cSp7ImA9WhZUFk4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-3934954933689198341</id><published>2011-05-23T07:18:00.000-07:00</published><updated>2011-06-09T09:16:55.279-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T09:16:55.279-07:00</app:edited><title>First go around with MMA7361 from Modern Device,</title><content type="html">Ok, I added pics of hooking this &lt;a href="http://shop.moderndevice.com/products/mma7260qt-3-axis-accelerometer"&gt;MMA7361&lt;/a&gt; 3-axis accelerometer module and here are my notes and some &lt;a href="http://www.cutedigi.com/product_info.php?products_id=4235"&gt;Arduino source code I ran on my Arduino Nano&lt;/a&gt;.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-fhnsodUbO_E/Tdr5_8VluoI/AAAAAAAAAKA/FtQjaokai9I/s1600/img_1142.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-fhnsodUbO_E/Tdr5_8VluoI/AAAAAAAAAKA/FtQjaokai9I/s320/img_1142.jpg" width="320" /&gt; &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
First up, for what ever reason on my nano I needed both main header pin sets hooked up. Vin didn't cut it and the main sensor side G either.&amp;nbsp; So I used V3.3 / G on the other side of the board.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sL0feC_9dsw/Tdr6GmA-sfI/AAAAAAAAAKE/N-BbVpleBLI/s1600/img_1145.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-sL0feC_9dsw/Tdr6GmA-sfI/AAAAAAAAAKE/N-BbVpleBLI/s320/img_1145.jpg" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ok A0,1 were my sharp IR Rangefinder and a photo resistor, so for those who don't have other stuff you probably will just go from 0-2 on your analog pins.. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;void setup() {
        Serial.begin(9600);
    }

    void loop() {
        int sensorValue0 = analogRead(0);  //  x pin on 0 etc.
        int sensorValue1 = analogRead(1);  //  x pin on 0 etc.
        int sensorValue2 = analogRead(2);  //  x pin on 0 etc.
        int sensorValue3 = analogRead(3);
        int sensorValue4 = analogRead(4);
        Serial.print("pv,  ");
        Serial.print(sensorValue0, DEC);
        Serial.print(",RF,  ");
        Serial.print(sensorValue1, DEC);
        Serial.print(",X,   ");
        Serial.print(sensorValue2, DEC);
        Serial.print(",Y,   ");
        Serial.print(sensorValue3, DEC);
        Serial.print(",Z,   ");
        Serial.println(sensorValue4, DEC);
    }

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-3934954933689198341?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/StmQcUpdu_fKsbKPmVnd-VbLwg8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/StmQcUpdu_fKsbKPmVnd-VbLwg8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/StmQcUpdu_fKsbKPmVnd-VbLwg8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/StmQcUpdu_fKsbKPmVnd-VbLwg8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/X9s4kedaZBY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/3934954933689198341/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=3934954933689198341" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3934954933689198341?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3934954933689198341?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/X9s4kedaZBY/first-go-around-with-mma7361-from.html" title="First go around with MMA7361 from Modern Device," /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-fhnsodUbO_E/Tdr5_8VluoI/AAAAAAAAAKA/FtQjaokai9I/s72-c/img_1142.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/05/first-go-around-with-mma7361-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcHRn06cSp7ImA9WhZVEEo.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-5187098782402078997</id><published>2011-05-22T08:21:00.000-07:00</published><updated>2011-05-22T08:27:17.319-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-22T08:27:17.319-07:00</app:edited><title>And now for one of my ideas coming full circle! ADK!</title><content type="html">Ok so its not my whole idea of an arm board running a robot that I blabbed about over 2 years ago.. (have video clips of me doing using the hawkboard.. ) Oh wait it is, and more!!&lt;br /&gt;
&lt;br /&gt;
All hail / fear (take your pick) the ADK! See this writeup &lt;a href="http://www.googleadk.com/"&gt;http://www.googleadk.com/&lt;/a&gt; till I get my own going.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-m40FSgjWqPw/TdknMRzN-HI/AAAAAAAAAJw/XKuVhoaZEe8/s1600/IMG_1141.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-m40FSgjWqPw/TdknMRzN-HI/AAAAAAAAAJw/XKuVhoaZEe8/s320/IMG_1141.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Oh and Google if you read this I want the little android robots ! So what do you get if you take Android SDK, a standard android device, some usb cables and a micro controller and put them into your robot?&lt;br /&gt;
A pile of electronics that can check your email?&lt;br /&gt;
No.. your robot gains all the brains, api's and horsepower of your Android device and you get to put down about 20 different IDE's and pick up the Eclipse / Android sdk and let er rip! Java, Jython, and much more for the price of free to some, those who buy boards can expect anywhere from 50ish bucks on up to several hundred..&lt;br /&gt;
So put an android in charge of your next well .. , android :)&lt;br /&gt;
&lt;br /&gt;
See that ice&amp;nbsp; chest in the image? See it in low earth orbit! YES Linux&amp;nbsp; / Android in space!! and making movies..&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/mSoPJevJyeE" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
Now if only they will do a "headless" version of android so we can have it running on arm boards in the robots without GUI's.. (brought that up again too at the faire.. sooner or later they'll get the picture.!)&lt;br /&gt;
&lt;br /&gt;
Great job Google!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-5187098782402078997?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/9uz6_b9zJpbrkz9XpPvVzC6dojw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9uz6_b9zJpbrkz9XpPvVzC6dojw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/9uz6_b9zJpbrkz9XpPvVzC6dojw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/9uz6_b9zJpbrkz9XpPvVzC6dojw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/O3UW6Y4TwTg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/5187098782402078997/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=5187098782402078997" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/5187098782402078997?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/5187098782402078997?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/O3UW6Y4TwTg/and-now-for-one-of-my-ideas-coming-full.html" title="And now for one of my ideas coming full circle! ADK!" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-m40FSgjWqPw/TdknMRzN-HI/AAAAAAAAAJw/XKuVhoaZEe8/s72-c/IMG_1141.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/05/and-now-for-one-of-my-ideas-coming-full.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YBSXg9eyp7ImA9WhZVEEo.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-1796019157714940278</id><published>2011-05-22T08:07:00.000-07:00</published><updated>2011-05-22T08:45:58.663-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-22T08:45:58.663-07:00</app:edited><title>Maker Faire feedback, wow croweded is an understatement..</title><content type="html">Maker Faire 2011, (No raptures, the world kept on going though robots were on the rise!) &lt;br /&gt;
&amp;nbsp;What a trip two years of change can be. Also if it gets much more crowded its going to need like a whole week, two days just isn't enough.&lt;br /&gt;
&lt;br /&gt;
My first year I nearly missed these guys, this year I'll lead with them.&lt;br /&gt;
&lt;object height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/eB8QubfYLgU?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/eB8QubfYLgU?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Ok so its not self aware but man what a show.&amp;nbsp; Also R2, watch out! Wall-E may be coming up on your heals soon! The booth next door featured a guy working very hard at recreating Wall-E, a mix of wood, plastic and electronics I'll bet next year he will give the r2 guys a run for their money!&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-gZuIdOvd4EU/TdkkAqwbpoI/AAAAAAAAAJg/f37zKll4y_g/s1600/IMG_1130.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-gZuIdOvd4EU/TdkkAqwbpoI/AAAAAAAAAJg/f37zKll4y_g/s320/IMG_1130.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Next we made our way to the main booth building, big highlights.. Modular robots?! yes kid friendly smart blocks.. Two booths Cubelets&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Msi2R14e8mQ/Tdkl4Ixe65I/AAAAAAAAAJo/axp-jaoaeOI/s1600/IMG_1137.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-Msi2R14e8mQ/Tdkl4Ixe65I/AAAAAAAAAJo/axp-jaoaeOI/s320/IMG_1137.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
and an individual Kuan-Ju had some slick examples..&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-rUTy6bynjmQ/TdklgJWaaBI/AAAAAAAAAJk/SFXl_CVjDNA/s1600/IMG_1136.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-rUTy6bynjmQ/TdklgJWaaBI/AAAAAAAAAJk/SFXl_CVjDNA/s320/IMG_1136.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;The floor was littered with Arm boards, Arduinos, projects large and small.&amp;nbsp; This one group also caught my Eye. Geek Dad, Seriously thinking about joining them..&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-VkdTcp6WFvE/Tdkmcmi-ybI/AAAAAAAAAJs/bWdQ5riXluU/s1600/IMG_1139.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-VkdTcp6WFvE/Tdkmcmi-ybI/AAAAAAAAAJs/bWdQ5riXluU/s320/IMG_1139.JPG" width="320" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Of course there were others, SparkFun was there with a broad array of samples and was doing workshops! Gota love sparkfun.. &lt;a href="http://www.sparkfun.com/"&gt;http://www.sparkfun.com/&lt;/a&gt; ..&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;MakerHub.com, another group I'll probably join. IEEE, the patent folks, Instructables.com, beagleboard.org, the tech shop and much more..&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;In relation to the android adk and my own projects I found a cool fair priced circut booth moderndevice.com, I'll be testing / posting about a handy 3axis accelerometer I picked up from them for ~10$ shortly..&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;All and all what I wanted more than anything was to have a big credit card and get to stay the whole weekend..&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-1796019157714940278?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/eJMpI4m5bxEFxbnaQVvHmf6YErM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eJMpI4m5bxEFxbnaQVvHmf6YErM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/eJMpI4m5bxEFxbnaQVvHmf6YErM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/eJMpI4m5bxEFxbnaQVvHmf6YErM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/2i7nRJpI8V4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/1796019157714940278/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=1796019157714940278" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1796019157714940278?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1796019157714940278?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/2i7nRJpI8V4/maker-faire-feedback-wow-croweded-is.html" title="Maker Faire feedback, wow croweded is an understatement.." /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-gZuIdOvd4EU/TdkkAqwbpoI/AAAAAAAAAJg/f37zKll4y_g/s72-c/IMG_1130.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/05/maker-faire-feedback-wow-croweded-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4DQHo9fSp7ImA9WhZXFU4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-2723134963517202413</id><published>2011-05-04T10:23:00.000-07:00</published><updated>2011-05-04T10:42:51.465-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-04T10:42:51.465-07:00</app:edited><title>Still chasing my linksprites electronic tail, added batteries though :)</title><content type="html">&lt;pre class="brush: cpp"&gt;/* Alpha code,

 * With input from HomeBrew Robotics Club 

 * members, Auzie Morgan and Howard Wang.

 */


// IR Rangefinder variables
#include &lt;Servo.h&gt;
float inches; //Used in reading rangefinder
int proxsens = 1;     // Used in reading rangefinder
int pos = 0;          // IR servo angle 0-180
int dir = 0;          // IRScan direction 0(f),1(l),2(r)
int posmax = 115;     // IR servo max angle 0-180
int posmin = 55;      // IR servo min angle 0-180
Servo svsensor;       // IRSensor Servo init.

//Motor variables
int dur=2500; //Estimated 6inch move
int pwr=255;  //PWM Rate for motor drivers
const int motorAPin1 = 3;   // AIN1
const int motorAPin2 = 4;   // AIN2
const int motorBPin1 = 6;  // BIN1
const int motorBPin2 = 7;  // BIN
const int PWMA = 2;
const int PWMB = 8;

//Other variables
int light;       // Photo resistor variable
int lightPin = 0;     // Photo resistor 
int i=0;       // Iterator1
int ir=0;       // Iterator1
int j=0;       // Iterator2
int irfwd=0;
int irlft=0;
int irrgt=0;
  

void setup(){

  Serial.println("setup");


  Serial.begin(9600);

  //establishContact();

  // set outputs:

  pinMode(motorAPin1, OUTPUT);

  pinMode(motorAPin2, OUTPUT);

  pinMode(motorBPin1, OUTPUT);

  pinMode(motorBPin2, OUTPUT);

  pinMode(PWMA, OUTPUT);

  pinMode(PWMB, OUTPUT);
  svsensor.attach(9);
}

 

//Setting up functions for testing

void stp() { 

  Serial.println("Stopping");

  digitalWrite(motorAPin1, LOW);

  digitalWrite(motorAPin2, LOW);

  digitalWrite(motorBPin1, LOW);

  digitalWrite(motorBPin2, LOW);

  analogWrite(PWMA, 0);

  analogWrite(PWMB, 0);

  delay(500);

}

 

void fwd(int p, int d) {
i=0;
j=0;
d=d;
inches=IRSensor(0);
while (i&lt;=d ){
  Serial.print("Forward,");
  Serial.print(d);
  Serial.print(",");
  Serial.println(i);

  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);

  analogWrite(PWMA, p);
  analogWrite(PWMB, p);

  delay(10);
  if (j==80){
   inches=IRSensor(0);
   j=0;
  } 
  i++;
  j++;
 if (inches &lt; 15){
  rev(p,500);
  return; 
 }
 }
  stp();

}

 

void rev(int p, int d){

  Serial.print("Reverse");

  Serial.print(d);

  Serial.print(",");

  Serial.println(p);

  digitalWrite(motorAPin1, HIGH);

  digitalWrite(motorAPin2, LOW);

  digitalWrite(motorBPin1, HIGH);

  digitalWrite(motorBPin2, LOW);

  analogWrite(PWMA, p);

  analogWrite(PWMB, p);

  delay(d);

  stp();

}

 

void rgt(int p, int d){
i=0;
j=0;
d=d;
inches=IRSensor(2);
while (i&lt;=d ){

    Serial.print("Right,");
    Serial.print(d);
    Serial.print(", ");
    Serial.print(p);
    Serial.print(", ");
    Serial.print(j);
    Serial.print(", ");
    Serial.println(i);

    digitalWrite(motorAPin1, LOW);

    digitalWrite(motorAPin2, HIGH);

    digitalWrite(motorBPin1, HIGH);

    digitalWrite(motorBPin2, LOW);

    analogWrite(PWMA, p);

    analogWrite(PWMB, p);

  delay(10);
  if (j==80){
   inches=IRSensor(2);
   j=0;
  } 
  i++;
  j++;
 if (inches &lt; 15){
  lft(p,500);
  stp();
  return; 
 }
 }

    stp();

}

 

void lft(int p, int d){

i=0;
j=0;
d=d;
inches=IRSensor(1);
while (i&lt;=d || inches &lt;=15){
    Serial.print("Left, ");
    Serial.print(d);
    Serial.print(", ");
    Serial.print(p);
    Serial.print(", ");
    Serial.print(j);
    Serial.print(", ");
    Serial.println(i);

    digitalWrite(motorAPin1, HIGH);

    digitalWrite(motorAPin2, LOW);

    digitalWrite(motorBPin1, LOW);

    digitalWrite(motorBPin2, HIGH);

    analogWrite(PWMA, p);

    analogWrite(PWMB, p);

  delay(10);
  if (j==80){
   inches=IRSensor(1);
   j=0;
  } 
  i++;
  j++;
 if (inches &lt; 15){
  rgt(p,500);
  stp();
  return; 
 }
 }

    stp();

}


int IRSensor(int dir){

float inches;
float inchesavg;
inches=0;
inchesavg=0;
if (dir==0){
posmax = 105;     // IR servo max angle 0-180
posmin = 85;      // IR servo min angle 0-180
} else if (dir==1){
posmax = 85;     // IR servo max angle 0-180
posmin = 55;      // IR servo min angle 0-180
} else if (dir==2){
posmax = 130;     // IR servo max angle 0-180
posmin = 115;      // IR servo min angle 0-180
}
ir=1;
for(pos = posmin; pos &lt;= posmax; pos += 5)  // goes from 0 degrees to 180 degrees 
  { 
   inches = 0.393700787*(9462/(analogRead(proxsens)-16.92));
   inchesavg=inchesavg+inches;
   svsensor.write(pos);
   Serial.print(inches);
   Serial.print(",");
   Serial.println(pos);
   ir=ir+1;
   delay (100);
  }
inches=inchesavg/ir;
if (inches &gt;= 80){
  inches=80;
}
if (inches &lt;=9){
  inches=9;
}
ir=0;
Serial.print("Average=");
Serial.println(inches);
svsensor.write(90);
return inches;

}


void status(){
      Serial.print("Status:");
      Serial.print(light);
      Serial.print(",");
      Serial.println(inches);
      Serial.print(",");
      Serial.println(irfwd);
      Serial.print(",");
      Serial.println(irlft);
      Serial.print(",");
      Serial.println(irrgt);
}

void loop()

{


  

  Serial.print("Main Loop");
int fwdcnt=0;

  

  Serial.println("Going auto");
inches=IRSensor(0);
Serial.print("inches=");
Serial.println(inches);
while ( inches &gt;= 9) {
      light=analogRead(lightPin);
      irfwd=IRSensor(0);
      irlft=IRSensor(1);
      irrgt=IRSensor(2);
      status();
      if ( irfwd &gt;=25 ){
        dir=0;
      } else if (irlft &gt;= 50){
        dir=1;
      } else if( fwdcnt &gt; 5) {
        rgt(pwr,dur);
        fwdcnt=0;
      } else {
        dir=2;
      }    
      
      
      if ( dir==0 ){
          Serial.println("Forward looks clear");
          fwd(pwr,800);
      } else if ( dir==1 ){
          lft(pwr,800);
        
      } else if (dir==2) {
          fwd(pwr,800);
      }
      if (inches == 9){
        Serial.println("Probably too close to something..");
       rev(pwr,500);
      } else if (inches == 80){
        Serial.println("Wide open ahead or range error");
        fwd(pwr,500);
      }


fwdcnt=fwdcnt+1;
}


}

   

  

 

  

void establishContact() {

  while (Serial.available() &lt;= 0) {

    Serial.println("helo");   // send an initial string

    delay(300);

  }

}



&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-2723134963517202413?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kQdpVg1X6R7rAmEp2AqwLCNG0XE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQdpVg1X6R7rAmEp2AqwLCNG0XE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kQdpVg1X6R7rAmEp2AqwLCNG0XE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kQdpVg1X6R7rAmEp2AqwLCNG0XE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/f9PBiOGlFoU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/2723134963517202413/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=2723134963517202413" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2723134963517202413?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2723134963517202413?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/f9PBiOGlFoU/still-chasing-my-linksprites-electronic.html" title="Still chasing my linksprites electronic tail, added batteries though :)" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/05/still-chasing-my-linksprites-electronic.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIGRn8zcSp7ImA9WhZQGUk.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-8450587572244680083</id><published>2011-04-26T10:01:00.000-07:00</published><updated>2011-04-27T14:42:07.189-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-27T14:42:07.189-07:00</app:edited><title>More tinkering with the linksprite, updated</title><content type="html">Ok, now I'm a bit happier with the code but worth sharing,&lt;br /&gt;
This is a sensor modified fixed pattern, still bumps into things but then backs out of most jams.  Next I'll weave the sensor read deeper into the movement routines.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/AEt5XPKBlxA" title="YouTube video player" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;/*
/*

 * auzie1.c

 *

 */


// IR Rangefinder variables
#include &lt;Servo.h&gt;
float inches; //Used in reading rangefinder
int proxsens = 1;     // Used in reading rangefinder
int pos = 0;          // IR servo angle 0-180
int dir = 0;          // IRScan direction 0(f),1(l),2(r)
int posmax = 115;     // IR servo max angle 0-180
int posmin = 55;      // IR servo min angle 0-180
Servo svsensor;       // IRSensor Servo init.

//Motor variables
int dur=2500; //Estimated 6inch move
int pwr=255;  //PWM Rate for motor drivers
const int motorAPin1 = 3;   // AIN1
const int motorAPin2 = 4;   // AIN2
const int motorBPin1 = 6;  // BIN1
const int motorBPin2 = 7;  // BIN
const int PWMA = 2;
const int PWMB = 8;

//Other variables
int light;       // Photo resistor variable
int lightPin = 0;     // Photo resistor 
int i=0;       // Iterator1
int j=0;       // Iterator2
  

void setup(){

  Serial.println("setup");


  Serial.begin(9600);

  //establishContact();

  // set outputs:

  pinMode(motorAPin1, OUTPUT);

  pinMode(motorAPin2, OUTPUT);

  pinMode(motorBPin1, OUTPUT);

  pinMode(motorBPin2, OUTPUT);

  pinMode(PWMA, OUTPUT);

  pinMode(PWMB, OUTPUT);
  svsensor.attach(9);
}

 

//Setting up functions for testing

void stp() { 

  Serial.println("Stopping");

  digitalWrite(motorAPin1, LOW);

  digitalWrite(motorAPin2, LOW);

  digitalWrite(motorBPin1, LOW);

  digitalWrite(motorBPin2, LOW);

  analogWrite(PWMA, 0);

  analogWrite(PWMB, 0);

  delay(500);

}

 

void fwd(int p, int d) {
i=0;
j=0;
d=d/10;

while (i&lt;=d &amp;&amp; inches &gt; 10){
  Serial.print("Forward,");
  Serial.print(d);
  Serial.print(",");
  Serial.println(p);

  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);

  analogWrite(PWMA, p);
  analogWrite(PWMB, p);

  delay(10);
  if (j==80){
   inches=IRSensor(0);
   j=0;
  }
  i=i+1;
  j=j+1;
  }
  stp();

}

 

void rev(int p, int d){

  Serial.print("Reverse");

  Serial.print(d);

  Serial.print(",");

  Serial.println(p);

  digitalWrite(motorAPin1, HIGH);

  digitalWrite(motorAPin2, LOW);

  digitalWrite(motorBPin1, HIGH);

  digitalWrite(motorBPin2, LOW);

  analogWrite(PWMA, p);

  analogWrite(PWMB, p);

  delay(d);

  stp();

}

 

void rgt(int p, int d){

    Serial.print("Right,");

    Serial.print(d);

    Serial.print(",");

    Serial.println(p);

    digitalWrite(motorAPin1, LOW);

    digitalWrite(motorAPin2, HIGH);

    digitalWrite(motorBPin1, HIGH);

    digitalWrite(motorBPin2, LOW);

    analogWrite(PWMA, p);

    analogWrite(PWMB, p);

    delay(d);

    stp();

}

 

void lft(int p, int d){

    Serial.print("Left,");

    Serial.print(d);

    Serial.print(",");

    Serial.println(p);

    digitalWrite(motorAPin1, HIGH);

    digitalWrite(motorAPin2, LOW);

    digitalWrite(motorBPin1, LOW);

    digitalWrite(motorBPin2, HIGH);

    analogWrite(PWMA, p);

    analogWrite(PWMB, p);

    delay(d);

    stp();

}


int IRSensor(int dir){

float inches;
float inchesavg;
inches=0;
inchesavg=0;
if (dir==0){
posmax = 105;     // IR servo max angle 0-180
posmin = 85;      // IR servo min angle 0-180
} else if (dir==1){
posmax = 85;     // IR servo max angle 0-180
posmin = 55;      // IR servo min angle 0-180
} else if (dir==2){
posmax = 115;     // IR servo max angle 0-180
posmin = 105;      // IR servo min angle 0-180
}
i=1;
for(pos = posmin; pos &lt;= posmax; pos += 5)  // goes from 0 degrees to 180 degrees 
  { 
   inches = 0.393700787*(9462/(analogRead(proxsens)-16.92));
   inchesavg=inchesavg+inches;
   svsensor.write(pos);
   Serial.print(inches);
   Serial.print(",");
   Serial.println(pos);
   i=i+1;
   delay (100);
  }
inches=inchesavg/i;
if (inches &gt;= 80){
  inches=80;
}
if (inches &lt;=10){
  inches=10;
}
Serial.print("Average=");
Serial.println(inches);
return inches;

}



void loop()

{


  

  Serial.print("Main Loop");


  

  Serial.println("Going auto");
inches=IRSensor(0);
Serial.print("inches=");
Serial.println(inches);
while ( inches &gt; 10) {
      light=analogRead(lightPin);
      if ( IRSensor(0) &gt; 10 &amp;&amp; IRSensor(0) &lt; 80 ){
        Serial.println("Forward looks clear");
        fwd(pwr,dur);
      } else if (IRSensor(1) &gt; 25 &amp;&amp; IRSensor(1) &lt; 80){
        Serial.println("Right looks clear");
        rgt(pwr,dur);
      } else if (IRSensor(2) &gt; 25 &amp;&amp; IRSensor(2) &lt; 80){
        Serial.println("Left looks clear");
        lft(pwr,dur);
      }
      if (IRSensor(0) == 10){
        Serial.println("Probably too close to something..");
       rev(pwr,dur);
      } else if (IRSensor(0) == 80){
        Serial.println("Wide open ahead or range error");
        fwd(pwr,dur);
      }

      Serial.print("Status:");

      Serial.print(light);

      Serial.print(",");

      Serial.println(inches);

}


}

   

  

 

  

void establishContact() {

  while (Serial.available() &lt;= 0) {

    Serial.println("helo");   // send an initial string

    delay(300);

  }

}



&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-8450587572244680083?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EkRZKPJYDwa53at7AYEIIsvNXuQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EkRZKPJYDwa53at7AYEIIsvNXuQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EkRZKPJYDwa53at7AYEIIsvNXuQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EkRZKPJYDwa53at7AYEIIsvNXuQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/tPgEDgrI3vc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/8450587572244680083/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=8450587572244680083" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8450587572244680083?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8450587572244680083?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/tPgEDgrI3vc/more-tinkering-with-linksprite.html" title="More tinkering with the linksprite, updated" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://img.youtube.com/vi/AEt5XPKBlxA/default.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/04/more-tinkering-with-linksprite.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMERHk8cSp7ImA9WhZRGEQ.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-3198917610412852335</id><published>2011-04-15T10:35:00.000-07:00</published><updated>2011-04-15T12:56:45.779-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-15T12:56:45.779-07:00</app:edited><title>A robotic chicken in every pot, News from the Stanford robotics block party,</title><content type="html">&lt;span style="font-size: small;"&gt;While a bit smaller this year, still impressive.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: small;"&gt;As you may or may not know I have been predicting more and more ARM showing up in robotics. So all sorts of folks putting ARM boards in charge of their machines, Neto Robotics and others showing off their ARM'd bots :)&amp;nbsp; Lots of kinect projects doing object tracking, recognition, area mapping and more.&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style="font-size: small;"&gt;No sine of any terminators yet though one or two had nerf / squirt guns..&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;AnyBots,&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Really cool tele presence robots, nice design reasonable prices.&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ynKm_iJ_VsU/Tah_roz8AFI/AAAAAAAAAI4/zdq1j2PfaLI/s1600/IMG_1084.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-ynKm_iJ_VsU/Tah_roz8AFI/AAAAAAAAAI4/zdq1j2PfaLI/s320/IMG_1084.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;Homebrew friends Vanadium Labs.. kinect + ROS = monkey see monkey do robots!? Slick.. This project copied people who stood in range of the optics.. &lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-KZqCZWijZV0/Tah_sPQbeMI/AAAAAAAAAI8/gEKBOlJJpr0/s1600/IMG_1083.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-KZqCZWijZV0/Tah_sPQbeMI/AAAAAAAAAI8/gEKBOlJJpr0/s320/IMG_1083.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;And on the inside, Volkswagons Darpa car ..&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RWy8v7H5a1k/Tah_q3w-zRI/AAAAAAAAAI0/VPDEl0Osiq8/s1600/IMG_1085.JPG" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://3.bp.blogspot.com/-RWy8v7H5a1k/Tah_q3w-zRI/AAAAAAAAAI0/VPDEl0Osiq8/s320/IMG_1085.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div style="text-align: center;"&gt;Various stanford projects in autonomous driving..&amp;nbsp; &lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ptGF5ZuEG6A/Tah_syp2X8I/AAAAAAAAAJA/RxmZLRikD0w/s1600/IMG_1082.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-ptGF5ZuEG6A/Tah_syp2X8I/AAAAAAAAAJA/RxmZLRikD0w/s320/IMG_1082.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Adept's demos were also cool..&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-5pUifmPI80g/Tah_tSYOXII/AAAAAAAAAJE/by-_9CGJDA8/s1600/IMG_1080.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-5pUifmPI80g/Tah_tSYOXII/AAAAAAAAAJE/by-_9CGJDA8/s320/IMG_1080.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;The San Jose tech museum had a slick vintage robot running amok.. &lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ri-hThxFRoQ/Tah_uK4Ap8I/AAAAAAAAAJI/k7g-OTldxzs/s1600/IMG_1079.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-Ri-hThxFRoQ/Tah_uK4Ap8I/AAAAAAAAAJI/k7g-OTldxzs/s320/IMG_1079.JPG" width="240" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-3198917610412852335?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V8YQh7ckFfrAra_DpIHrlRTUg1o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V8YQh7ckFfrAra_DpIHrlRTUg1o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V8YQh7ckFfrAra_DpIHrlRTUg1o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V8YQh7ckFfrAra_DpIHrlRTUg1o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/kJYiGuFxpqI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/3198917610412852335/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=3198917610412852335" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3198917610412852335?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3198917610412852335?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/kJYiGuFxpqI/robotic-chicken-in-every-pot-news-from.html" title="A robotic chicken in every pot, News from the Stanford robotics block party," /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-ynKm_iJ_VsU/Tah_roz8AFI/AAAAAAAAAI4/zdq1j2PfaLI/s72-c/IMG_1084.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/04/robotic-chicken-in-every-pot-news-from.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8GQn07eSp7ImA9WhZTGUw.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-8565435050890522806</id><published>2011-03-23T15:20:00.000-07:00</published><updated>2011-03-23T15:20:23.301-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-23T15:20:23.301-07:00</app:edited><title>This TED about Garrett Lisi just must be shared,</title><content type="html">&lt;a href="http://www.ted.com/talks/garrett_lisi_on_his_theory_of_everything.html"&gt;Garret Lisi theory of everything&lt;/a&gt;&lt;br /&gt;
&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt;&lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/GarrettLisi_2008-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/GarrettLisi-2008.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=371&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=garrett_lisi_on_his_theory_of_everything;year=2008;theme=to_boldly_go;theme=unconventional_explanations;event=TED2008;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/GarrettLisi_2008-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/GarrettLisi-2008.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=371&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=garrett_lisi_on_his_theory_of_everything;year=2008;theme=to_boldly_go;theme=unconventional_explanations;event=TED2008;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
I feel this is as close as we have come to figuring "everything" out..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-8565435050890522806?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WOJHGOnJK5hQJO-HyN4p0GiaCV0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WOJHGOnJK5hQJO-HyN4p0GiaCV0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WOJHGOnJK5hQJO-HyN4p0GiaCV0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WOJHGOnJK5hQJO-HyN4p0GiaCV0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/z-5bt_VsElE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/8565435050890522806/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=8565435050890522806" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8565435050890522806?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8565435050890522806?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/z-5bt_VsElE/this-ted-about-garrett-lisi-just-must.html" title="This TED about Garrett Lisi just must be shared," /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/03/this-ted-about-garrett-lisi-just-must.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MBSH4zfCp7ImA9Wx9bEEg.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-4161303210846524717</id><published>2011-02-18T09:50:00.000-08:00</published><updated>2011-02-18T09:50:59.084-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-18T09:50:59.084-08:00</app:edited><title>This weeks rebuilds, programming to follow</title><content type="html">Ok, &lt;br /&gt;
Now that I have two Arduino controllers and two Sharp IR Range finders I felt it was time for some rebuilds!  Meet Stubby and my Linksprite based rover.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-D1sTb3vuNQA/TV6wdouyudI/AAAAAAAAAHw/2SMCgd-UJD0/s1600/photo%25282%2529.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-D1sTb3vuNQA/TV6wdouyudI/AAAAAAAAAHw/2SMCgd-UJD0/s320/photo%25282%2529.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;The linksrpite got one of my early servo brackets as a panning mount for its sensor.&lt;br /&gt;
&lt;br /&gt;
While the 6 servo biped got a reduction in complexity, I said I was going to do this along time ago.&amp;nbsp; Well now it begins!&amp;nbsp; A 4 servo biped in spirit of another clever guys post on indestructibles.&amp;nbsp; With a fith servo for panning the IR Rangefinder.&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wZ9asrZrBaM/TV6weMhrs8I/AAAAAAAAAH0/4BpgC2odLrE/s1600/photo.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-wZ9asrZrBaM/TV6weMhrs8I/AAAAAAAAAH0/4BpgC2odLrE/s320/photo.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Of course I still have a bit more work to do and adjustments but these two platforms are going to get more than just puppeting software.&amp;nbsp; These will get brains, first small micro controller level programming and later more complex arm based slaving..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-4161303210846524717?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5OaYAPL7CjCsHlgxUdq1yxlvNB8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5OaYAPL7CjCsHlgxUdq1yxlvNB8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5OaYAPL7CjCsHlgxUdq1yxlvNB8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5OaYAPL7CjCsHlgxUdq1yxlvNB8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/7oACVKm3bmA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/4161303210846524717/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=4161303210846524717" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/4161303210846524717?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/4161303210846524717?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/7oACVKm3bmA/this-weeks-rebuilds-programming-to.html" title="This weeks rebuilds, programming to follow" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-D1sTb3vuNQA/TV6wdouyudI/AAAAAAAAAHw/2SMCgd-UJD0/s72-c/photo%25282%2529.JPG" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/02/this-weeks-rebuilds-programming-to.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ECR3c-fCp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-7046062456545997334</id><published>2011-02-06T09:24:00.000-08:00</published><updated>2011-02-06T11:47:46.954-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:47:46.954-08:00</app:edited><title>Initial attempt at self motivating,</title><content type="html">Still a fair ways to go, need to flesh out a mapping / location tracking system and extend the weighted random behavior section.&amp;nbsp; However here is a basic moving / rule driven frame work intended for my linksprite base, Sharp IR, Arduino Nano 3.0 and Motor controller. It still needs to be woke up by serial, just send it any message and the routine will start.&lt;br /&gt;
&lt;br /&gt;
(Youtube like coming soon.)&lt;br /&gt;
&lt;br /&gt;
There is alot of unused / commented out bits in here but soon I will turn it all on.  If you have some suggestions please feel free to comment.  As far as I know this is one of the few public postings of arduino code with a set of behaviors and intent on mapping an area.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;int area[100][100];
int x=0;
int y=0;
long randNumber;
int bias1=50;
int bias2=50;
int bias3=25;
int bias4=30;
int bias5=25;
int dur=2000;
int pwr=255;
float inches;
int light;

int v = 0;
int lightPin = 0;  
int proxsens = 1; 
const int motorAPin1 = 3;   // AIN1
const int motorAPin2 = 4;   // AIN2
const int motorBPin1 = 6;  // BIN1
const int motorBPin2 = 7;  // BIN
const int PWMA = 2;
const int PWMB = 8;
 
void setup(){
  Serial.println("setup");
  x=0;
  y=0;
  //initmap();
  randomSeed(analogRead(6));
  Serial.begin(9600);
  establishContact();
  // set outputs:
  pinMode(motorAPin1, OUTPUT);
  pinMode(motorAPin2, OUTPUT);
  pinMode(motorBPin1, OUTPUT);
  pinMode(motorBPin2, OUTPUT);
  pinMode(PWMA, OUTPUT);
  pinMode(PWMB, OUTPUT);
}

//void initmap(){
//for ( int x=0 ; x &lt; 99 ; x++ ){
//  for ( int y=0 ; y &lt; 99 ; y++ ){
//   area[x][y]=1;
//  } 
// }
//}
//void printmap(){
//for ( int x=0 ; x &lt; 99 ; x++ ){
//  for ( int y=0 ; y &lt; 99 ; y++ ){
//   Serial.print(area[x][y]);
//  } 
// }
//}

//Setting up functions for testing
void stp() {  
  Serial.println("Stopping");
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, LOW);
  analogWrite(PWMA, 0);
  analogWrite(PWMB, 0);
  delay(500);
}

void fwd(int p, int d) {
  Serial.print("Forward,");
  Serial.print(d);
  Serial.print(",");
  Serial.println(p);
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);
  analogWrite(PWMA, p);
  analogWrite(PWMB, p);
  delay(d);
  stp();
}

void rev(int p, int d){
  Serial.print("Reverse");
  Serial.print(d);
  Serial.print(",");
  Serial.println(p);
  digitalWrite(motorAPin1, HIGH);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, HIGH);
  digitalWrite(motorBPin2, LOW);
  analogWrite(PWMA, p);
  analogWrite(PWMB, p);
  delay(d);
  stp();
}

void rgt(int p, int d){
    Serial.print("Right,");
    Serial.print(d);
    Serial.print(",");
    Serial.println(p);
    digitalWrite(motorAPin1, LOW);
    digitalWrite(motorAPin2, HIGH);
    digitalWrite(motorBPin1, HIGH);
    digitalWrite(motorBPin2, LOW);
    analogWrite(PWMA, p);
    analogWrite(PWMB, p);
    delay(d);
    stp();
}

void lft(int p, int d){
    Serial.print("Left,");
    Serial.print(d);
    Serial.print(",");
    Serial.println(p);
    digitalWrite(motorAPin1, HIGH);
    digitalWrite(motorAPin2, LOW);
    digitalWrite(motorBPin1, LOW);
    digitalWrite(motorBPin2, HIGH);
    analogWrite(PWMA, p);
    analogWrite(PWMB, p);
    delay(d);
    stp();
}

void loop(){
  Serial.print("Main Loop");
  float inches = 0.393700787*(9462/(analogRead(proxsens)-16.92));
  //Some behavior
  if ( inches &lt; 15 &amp; inches &gt; 0){
    Serial.print("Yikes something is at");
    Serial.println(inches);
    rev(150,500);
  }
 
  Serial.println("Going auto");
    randNumber = random(0, 150);
    Serial.println(randNumber);
    light=analogRead(lightPin);
    if ((randNumber-bias1) &lt;= 10 &amp;&amp; (randNumber-bias1) &gt; 0){
      Serial.println("action 1");
      Serial.println((randNumber-bias1));
      fwd(pwr,dur);
      fwd(pwr,dur);
      fwd(pwr,dur);
    }else if ((randNumber-bias2) &lt;= 20 &amp;&amp; (randNumber-bias1) &gt; 10){
      Serial.println("action 2"); 
      Serial.println((randNumber-bias2));      
      rgt(pwr,dur);
    }else if ((randNumber-bias3) &lt;= 30 &amp;&amp; (randNumber-bias1) &gt; 20){
      Serial.println("action 3");
      Serial.println((randNumber-bias3));      
      rev(pwr,dur);
    }else if ((randNumber-bias4) &lt;= 40 &amp;&amp; (randNumber-bias1) &gt; 30){
      Serial.println("action 4");            
      Serial.println((randNumber-bias4));      
      lft(pwr,dur);
    }else if ((randNumber-bias5) &lt;= 50 &amp;&amp; (randNumber-bias1) &gt; 40){ 
      Serial.println("action 5");           
      Serial.println((randNumber-bias5));      
      fwd(pwr,dur);
    }else {
      Serial.print("Status:");
      Serial.print(x);
      Serial.print(",");
      Serial.print(y);
      Serial.print(",");
      Serial.print(light);
      Serial.print(",");
      Serial.println(inches);
      //printmap();
    }
 
   Serial.println("Resting");
   delay(500);
}
  
 

 
void establishContact() {
  while (Serial.available() &lt;= 0) {
    Serial.println("helo");   // send an initial string
    delay(300);
  }
}

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-7046062456545997334?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/mqPLdBEeGdWshdWCFkL-SdJadSM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mqPLdBEeGdWshdWCFkL-SdJadSM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/mqPLdBEeGdWshdWCFkL-SdJadSM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/mqPLdBEeGdWshdWCFkL-SdJadSM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/ovtfZMrrjpE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/7046062456545997334/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=7046062456545997334" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/7046062456545997334?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/7046062456545997334?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/ovtfZMrrjpE/initial-attempt-at-self-motivating.html" title="Initial attempt at self motivating," /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/02/initial-attempt-at-self-motivating.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C08ERX4_fSp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-7881726428189059849</id><published>2011-01-30T16:46:00.000-08:00</published><updated>2011-02-06T11:50:04.045-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:50:04.045-08:00</app:edited><title>Got some new toys from CuteDigi!</title><content type="html">Ok first let me say the Arduino Nano rocks, tiny breadboard or perfboard friendly and worked with my normal arduino programming and programmer in moments.&amp;nbsp; Added one of my breadboards and my Sparkfun Motor Driver 1A Dual TB6612FNG to the LinkSprite Robot Platform and in minutes I had a robot base. Sharp IR Distance Sensor GP2Y0A02YK (8-60 inches) was also in my order.. &lt;br /&gt;
So I skimmed through the &lt;a href="http://www.cutedigi.com/pub/Arduino/Arduino_Nano3_0.pdf"&gt;PDF&lt;/a&gt; and cut / trimmed some jumperwire.. &lt;br /&gt;
And after a bit of adjusting came up with this.. .&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_rTBBe6IRTAU/TUYFWEEPqLI/AAAAAAAAAG0/G4FUpt054L4/s1600/newrobot.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/_rTBBe6IRTAU/TUYFWEEPqLI/AAAAAAAAAG0/G4FUpt054L4/s320/newrobot.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
A few gotchas, the IR range finder didn't come with any hookup cable and needs one.&lt;br /&gt;
The sony sensor doesn't have much written up on it but I'll work on it.. &lt;br /&gt;
The Motor mounts could use a little lock-tight or epoxy to keep them from shifting.&lt;br /&gt;
But heck for about 100 bucks you get more robot than a BeO Bot kit for sure..!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I dug up my old test code and modified it a bit...&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#define VOLTS_PER_UNIT    .0049F        // (.0049 for 10 bit A-D)


float inches;

int v = 0;
int lightPin = 0;  
int proxsens = 1; 
const int motorAPin1 = 3;   // AIN1
const int motorAPin2 = 4;   // AIN2
const int motorBPin1 = 6;  // BIN1
const int motorBPin2 = 7;  // BIN
const int PWMA = 2;
const int PWMB = 8;
 
void setup() {
  Serial.begin(9600);
  establishContact();
  // set outputs:
  pinMode(motorAPin1, OUTPUT);
  pinMode(motorAPin2, OUTPUT);
  pinMode(motorBPin1, OUTPUT);
  pinMode(motorBPin2, OUTPUT);
  pinMode(PWMA, OUTPUT);
  pinMode(PWMB, OUTPUT);
}
//Setting up functions for testing
void stp() {  
  Serial.println("Stopping");
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, LOW);
  analogWrite(PWMA, 0);
  analogWrite(PWMB, 0);
  delay(500);
}

void fwd(int p, int d) {
  Serial.print("Forward,");
  Serial.print(d);
  Serial.print(",");
  Serial.println(p);
  digitalWrite(motorAPin1, LOW);
  digitalWrite(motorAPin2, HIGH);
  digitalWrite(motorBPin1, LOW);
  digitalWrite(motorBPin2, HIGH);
  analogWrite(PWMA, p);
  analogWrite(PWMB, p);
  delay(d);
  stp();
}

void rev(int p, int d){
  Serial.print("Reverse");
  Serial.print(d);
  Serial.print(",");
  Serial.println(p);
  digitalWrite(motorAPin1, HIGH);
  digitalWrite(motorAPin2, LOW);
  digitalWrite(motorBPin1, HIGH);
  digitalWrite(motorBPin2, LOW);
  analogWrite(PWMA, p);
  analogWrite(PWMB, p);
  delay(d);
  stp();
}

void rgt(int p, int d){
    Serial.print("Right,");
    Serial.print(d);
    Serial.print(",");
    Serial.println(p);
    digitalWrite(motorAPin1, LOW);
    digitalWrite(motorAPin2, HIGH);
    digitalWrite(motorBPin1, HIGH);
    digitalWrite(motorBPin2, LOW);
    analogWrite(PWMA, p);
    analogWrite(PWMB, p);
    delay(d);
    stp();
}

void lft(int p, int d){
    Serial.print("Left,");
    Serial.print(d);
    Serial.print(",");
    Serial.println(p);
    digitalWrite(motorAPin1, HIGH);
    digitalWrite(motorAPin2, LOW);
    digitalWrite(motorBPin1, LOW);
    digitalWrite(motorBPin2, HIGH);
    analogWrite(PWMA, p);
    analogWrite(PWMB, p);
    delay(d);
    stp();
}

void loop()
{
float inches = 0.393700787*(9462/(analogRead(proxsens)-16.92));
//Some behavior
if ( inches &lt; 15 &amp; inches &gt; 0){
  Serial.print("Yikes something is at");
  Serial.println(inches);
  rev(150,500);
}
 if ( Serial.available()) {
    char ch = Serial.read();
    Serial.println(ch);
    Serial.print("Rangefinder in:");
    Serial.println(inches);
    switch(ch) {
      case '0'...'9':
        Serial.println("Got case Power");
        v = 0 + ch - '0';
        v = v*29;
        Serial.println(v, DEC);
        break;
      case 'b':
        rev(v,1000);
        break;
      case 'f':
      if ( inches &lt; 15 ){
        Serial.print("Object too close, ");
        Serial.print(DEC, inches);
        Serial.println(" inches away");
        break;
      }else {
        Serial.print("Proximity reading, ");
        Serial.print(DEC, inches);
        Serial.println(" inches");
        fwd(v,1000);
        break;
      }
      case 'r':
        rgt(v,1000);
        break;
      case 'l':
        lft(v,1000);
        break;
      case 's':
        stp();
        break;
    }
 }
}
 
void establishContact() {
  while (Serial.available() &lt;= 0) {
    Serial.println("helo");   // send an initial string
    delay(300);
  }
}

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-7881726428189059849?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tYytI--SLQafW_ozrxULG2KecCc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYytI--SLQafW_ozrxULG2KecCc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tYytI--SLQafW_ozrxULG2KecCc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tYytI--SLQafW_ozrxULG2KecCc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/zmcop0T032w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/7881726428189059849/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=7881726428189059849" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/7881726428189059849?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/7881726428189059849?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/zmcop0T032w/got-some-new-toys-from-cutedigi.html" title="Got some new toys from CuteDigi!" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_rTBBe6IRTAU/TUYFWEEPqLI/AAAAAAAAAG0/G4FUpt054L4/s72-c/newrobot.JPG" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/01/got-some-new-toys-from-cutedigi.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04GQ3k8eSp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-1035398743672046793</id><published>2011-01-25T06:13:00.000-08:00</published><updated>2011-02-06T11:52:02.771-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:52:02.771-08:00</app:edited><title>Another arduino biped example, this one with working source code,</title><content type="html">A brilliant biped example! From a clever guy on &lt;a href="http://lars.roland.bz/biped-arduino-robot/code/"&gt;Disruptive Messaging&lt;/a&gt;&lt;br /&gt;
My hats off to this DIY'er,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;img height="320" src="http://lars.roland.bz/images/robot600.jpg" width="230" /&gt;&lt;/center&gt;&lt;br /&gt;
I've actually been thinking about positions modified by math as a pattern rather than positions as a pattern.  I'll take a look at this source and see how hard it is to reduce it to 6 servos and still walk.. &lt;br /&gt;
&lt;br /&gt;
Here is his aduino source! And again the link to his blog post&lt;a href="http://lars.roland.bz/biped-arduino-robot/code/"&gt;Disruptive Messaging&lt;/a&gt;&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;#include &lt;servo.h&gt;

Servo RHip1;  Servo RHip2;
Servo RThigh;
Servo RKnee;
Servo RAnkle1;
Servo RAnkle2;

Servo LHip1;  Servo LHip2;
Servo LThigh;
Servo LKnee;
Servo LAnkle1;
Servo LAnkle2;

// Lean back
//LThigh.write(LThigh.read()-5);
//  RThigh.write(RThigh.read()+5);

int RHip1Center = 90;  int RHip2Center = 90;
int RThighCenter = 75;
int RKneeCenter = 110;
int RAnkle1Center = 100;
int RAnkle2Center = 60;

int LHip1Center = 100;  int LHip2Center = 40;
int LThighCenter = 50;
int LKneeCenter = 70;
int LAnkle1Center = 90;
int LAnkle2Center = 70;

int walking = 0;

int d = 100;

void setup()
{

Serial.begin(9600);
RHip1.attach(13);   RHip2.attach(12);   RThigh.attach(11);
RKnee.attach(10);   RAnkle1.attach(9);   RAnkle2.attach(8);
LHip1.attach(2);   LHip2.attach(3);   LThigh.attach(4);
LKnee.attach(5);   LAnkle1.attach(6);   LAnkle2.attach(7);
}

void loop()
{

//stand();
//crouch();
//delay(15000);  //  if (walking == 0) {
//StandRightForward();
//delay(15000);       //StandLeftForward();
//delay(15000);       //stand();
//      delay(5000);  //  }

//swayright();
//swayleft();
StandRightForward();
//delay(5000);   stepleft();
//delay(5000);  //  walk();
}

void stepleft()
{
StandRightForward();
LeanBack();
LeanRight();
LiftRightHip();
SpreadLegs();
// Low batt, spread legs more
SpreadLegs();
LeanRight();
LeanRight();
LeanRight();

LiftLeftFoot();
LiftLeftHip();
LiftLeftHip();
SpreadLegs();

LiftLeftFoot();
//LeanBack();
//LeanBack();

LeftLegForward();
LeftLegForward();
LeftLegForward();

// Does this cause more speed and cause the inbalance?
StretchRightKnee();
DownLeftFoot();
LeanBack();
LeftToeUp();
DownLeftFoot();

LeftToeUp();
LeftToeUp();
RightToeUp();

LeanLeft();
LeftToeUp();
RightToeUp();
LeanLeft();
LiftRightHip();
LiftRightHip();
DownLeftFoot();
LeanBack();

StandLeftForward();
//LeanBack();
//LeanBack();

LeanLeft();
LiftLeftHip();
//Low battery, turn on this:
//SpreadLegs();
SpreadLegs();
LeanLeft();
LeanLeft();

LiftRightFoot();
LiftRightHip();
LiftRightHip();
SpreadLegs();

LiftRightFoot();
LeanBack();
LeanBack();

RightLegForward();
RightLegForward();
RightLegForward();
RightLegForward();

StretchLeftKnee();

DownRightFoot();
LeanBack();

RightToeUp();
DownRightFoot();

RightToeUp();
RightToeUp();
LeftToeUp();
LeanRight();
LeftToeUp();
RightToeUp();
LeanRight();
LiftLeftHip();
LiftLeftHip();
DownRightFoot();
LeanBack();
StandRightForward();

}

/*
void swayright()
{

LeanRight();
LiftRightHip();
SpreadLegs();
LeanRight();
//LeanRight();
LeanRight();
LeanRight();

delay(5000);
LeanLeft();
LeanLeft();
LiftLeftHip();

}

void swayleft()
{

LeanLeft();
LiftLeftHip();
SpreadLegs();
LeanLeft();
//LeanLeft();
LeanLeft();
LeanLeft();

delay(5000);
LeanRight();
LeanRight();
LiftRightHip();   stand();

}
*/

void stand()
{
Serial.println(“STAND”);
RHip1.write(RHip1Center);     RHip2.write(RHip2Center);     RThigh.write(RThighCenter);
RKnee.write(RKneeCenter);     RAnkle1.write(RAnkle1Center);     RAnkle2.write(RAnkle2Center);
LHip1.write(LHip1Center);     LHip2.write(LHip2Center);     LThigh.write(LThighCenter);
LKnee.write(LKneeCenter);     LAnkle1.write(LAnkle1Center);     LAnkle2.write(LAnkle2Center);
delay(d);  }

void crouch()
{

Serial.println(“crouch”);
RThigh.write(RThigh.read()-10);
RKnee.write(RKnee.read()-20);   RAnkle1.write(RAnkle1.read()-10);
LThigh.write(LThigh.read()+10);
LKnee.write(LKnee.read()+20);   LAnkle1.write(LAnkle1.read()+10);
delay(d);
}

void StandRightForward()
{
Serial.println(“StandRightForward”);
RHip1.write(RHip1Center);     RHip2.write(RHip2Center);     RThigh.write(RThighCenter);
RKnee.write(RKneeCenter);     RAnkle1.write(RAnkle1Center);     RAnkle2.write(RAnkle2Center);
LHip1.write(LHip1Center);     LHip2.write(LHip2Center);     LThigh.write(LThighCenter-20);
LKnee.write(LKneeCenter);     LAnkle1.write(LAnkle1Center+20);     LAnkle2.write(LAnkle2Center);
delay(d);  }

void StandLeftForward()
{
Serial.println(“StandLeftForward”);
RHip1.write(RHip1Center);     RHip2.write(RHip2Center);     RThigh.write(RThighCenter+20);
RKnee.write(RKneeCenter);     RAnkle1.write(RAnkle1Center-20);     RAnkle2.write(RAnkle2Center);
LHip1.write(LHip1Center);     LHip2.write(LHip2Center);     LThigh.write(LThighCenter);
LKnee.write(LKneeCenter);     LAnkle1.write(LAnkle1Center);     LAnkle2.write(LAnkle2Center);
delay(d);  }

void ResetHip()
{
Serial.println(“ResetHip”);
LHip2.write(LHip2.read()+5);   RHip2.write(RHip2.read()+5);   delay(d);                       }

void LiftLeftHip()
{
Serial.println(“LiftLeftHip”);
LHip2.write(RHip1Center);   LHip2.write(RHip2Center);   LHip2.write(LHip1Center);   LHip2.write(LHip2Center);   delay(d);                       }

void LiftRightHip()
{
Serial.println(“LiftRightHip”);
LHip2.write(LHip2.read()-5);   RHip2.write(RHip2.read()-5);   delay(d);                       }

void SpreadLegs()
{
Serial.println(“SpreadLegs”);
LHip2.write(LHip2.read()-5);   RHip2.write(RHip2.read()+5);   delay(d);                       }

void CollectLegs()
{
Serial.println(“CollectLegs”);
LHip2.write(LHip2.read()+5);   RHip2.write(RHip2.read()-5);   delay(d);                       }

void LeanLeft() {
Serial.println(“LeanLeft”);
RAnkle2.write(RAnkle2.read()-5);
LAnkle2.write(LAnkle2.read()-5);
delay(d);                       }

void LeanRight() {
Serial.println(“LeanRight”);
RAnkle2.write(RAnkle2.read()+5);
LAnkle2.write(LAnkle2.read()+5);
delay(d);                       }

void LeftLegForward() {
Serial.println(“LeftFootForward”);
LThigh.write(LThigh.read()+10);
LKnee.write(LKnee.read()-10);   LAnkle1.write(LAnkle1.read()-10);
delay(d);                       }

void LeftFootForward() {
Serial.println(“LeftFootForward”);
//LThigh.write(LThigh.read()+10);
LKnee.write(LKnee.read()-10);   LAnkle1.write(LAnkle1.read()-5);
delay(d);                       }

void LeanBack()
{
Serial.println(“LeanBack”);
LThigh.write(LThigh.read()-5);
RThigh.write(RThigh.read()+5);
delay(d);  }

void LeanForward()
{
Serial.println(“LeanBack”);
LThigh.write(LThigh.read()+10);
RThigh.write(RThigh.read()-10);
delay(d);  }

void LeftThighBackward() {
Serial.println(“LeftFootBack”);
LThigh.write(LThigh.read()-10);
delay(d);                       }

void LeftThighForward() {
Serial.println(“LeftThighForward”);
LThigh.write(LThigh.read()+10);
delay(d);                       }

void StretchLeftKnee() {
Serial.println(“StretchLeftKnee”);
LKnee.write(LKnee.read()-5);   delay(d);                       }

void LiftLeftFoot() {
Serial.println(“LiftLeftFoot”);
LThigh.write(LThigh.read()+10);
LKnee.write(LKnee.read()+10);     LAnkle1.write(LAnkle1.read()-10);
delay(d);                       }

void DownLeftFoot() {
Serial.println(“DownLeftFoot”);
LThigh.write(LThigh.read()-10);
LKnee.write(LKnee.read()-5);     LAnkle1.write(LAnkle1.read()-5);
delay(d);                       }

void RightLegForward() {
Serial.println(“RightLegForward”);
RThigh.write(RThigh.read()-10);
RKnee.write(RKnee.read()+10);     RAnkle1.write(RAnkle1.read()+10);
delay(d);                       }

void RightFootForward() {
Serial.println(“RightFootForward”);
//RThigh.write(RThigh.read()-10);
RKnee.write(RKnee.read()+10);     RAnkle1.write(RAnkle1.read()+5);
delay(d);                       }

void RightThighBackward()
{
Serial.println(“RightFootForward”);
RThigh.write(RThigh.read()+10);   delay(d);    }

void RightThighForward()
{
Serial.println(“RightFootForward”);
RThigh.write(RThigh.read()-10);   delay(d);  }

void RightToeUp()
{
Serial.println(“RightAnkleForward”);
RAnkle1.write(RAnkle1.read()-5);
delay(d);                       }

void RightToeDown()
{
Serial.println(“RightAnkleBackward”);
RAnkle1.write(RAnkle1.read()+5);
delay(d);                       }

void ResetLeftAnkle()
{
Serial.println(“ResetLeftAnkle”);
LAnkle1.write(RAnkle1Center);
LAnkle1.write(RAnkle2Center);
delay(d);                       }

void ResetRightAnkle()
{
Serial.println(“ResetLeftAnkle”);
LAnkle1.write(RAnkle1Center);
LAnkle1.write(RAnkle2Center);
delay(d);                       }

void LeftToeUp()
{
Serial.println(“LeftAnkleForward”);
LAnkle1.write(LAnkle1.read()+5);
delay(d);                       }

void LeftToeDown()
{
Serial.println(“LeftAnkleBackward”);
LAnkle1.write(LAnkle1.read()-5);
delay(d);                       }

void StretchRightKnee() {
Serial.println(“StretchRightKnee”);
RKnee.write(RKnee.read()+5);   delay(d);                       }

void LiftRightFoot() {
Serial.println(“LiftRightFoot”);
RThigh.write(RThigh.read()-10);
RKnee.write(RKnee.read()-10);   RAnkle1.write(RAnkle1.read()+10);
delay(d);                       }

void DownRightFoot() {
Serial.println(“DownRightFoot”);
RThigh.write(RThigh.read()+10);
RKnee.write(RKnee.read()+5);   RAnkle1.write(RAnkle1.read()+5);
delay(d);                       }
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-1035398743672046793?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/kqNqYdsF9eHH2dxrj2UHcMoP0_Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kqNqYdsF9eHH2dxrj2UHcMoP0_Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/kqNqYdsF9eHH2dxrj2UHcMoP0_Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/kqNqYdsF9eHH2dxrj2UHcMoP0_Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/M7FBe6uPzTU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/1035398743672046793/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=1035398743672046793" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1035398743672046793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1035398743672046793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/M7FBe6uPzTU/another-arduino-biped-example-this-one.html" title="Another arduino biped example, this one with working source code," /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/01/another-arduino-biped-example-this-one.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcESXsyfip7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-644482775693834189</id><published>2011-01-12T07:29:00.000-08:00</published><updated>2011-02-06T11:53:28.596-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:53:28.596-08:00</app:edited><title>New test command, Python Curses and pyserial for servo control</title><content type="html">Ok, &lt;br /&gt;
First phase, find a better UI than reading things typed in and then pressing enter.  Find #1 Curses, issue number #1 curses is huge and I don't want to learn it all.  So after reviewing a few different examples, tinkering a bit, reading mailing lists (why the main python page doesn't explain some of this I don't know.).. &lt;br /&gt;
&lt;pre class="brush: python"&gt;#!/usr/bin/python
import curses, time, sys
def main(stdscr):
 x=0
 while x != ord('q'):
    stdscr.clear()
    stdscr.border(1)
    stdscr.addstr(1, 2, "Hello World! q) to quit") # or what you want
    stdscr.refresh()
    x = stdscr.getch()

curses.wrapper(main)
exit()
&lt;/pre&gt;Was that so hard?? &lt;br /&gt;
&lt;br /&gt;
But here ya go.. curses servo control!  Note adaptable but meant for my Arduino Servo controller setup.  That being said this should work well with Scott Mini, Pololu and several others.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_rTBBe6IRTAU/TS9za0EJDOI/AAAAAAAAAF4/Nq6GWimuriI/s1600/pycursesv1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/_rTBBe6IRTAU/TS9za0EJDOI/AAAAAAAAAF4/Nq6GWimuriI/s320/pycursesv1.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Ok,&lt;br /&gt;
First version done, phew gota say I avoided curses for a reason. However I think this is both simple and fairly complex.  Still looking to do a bit more, last x commands sent window (possibly with edit / resend) a connect / disconnect function with error handling.  However, this works, exits gracefully and is happy in my ARM Hawkboard's OS.. &lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: python"&gt;#!/usr/bin/env python
import time, sys, serial, curses
from os import system
log="./servopos.log"
logfile=open(log,"w")

#set up the serial port for action (0==COM1==ttyS0)
if 'comport' not in dir():
 comport="/dev/ttyUSB1"

if 'baudrate' not in dir():
 baudrate="9600"

packet=0
servo=list()
max=5
first=0

while first &lt;= max:
 servo.append([first,'90'])
 first=first+1

def sercon(baudrate,comport):
    global ser
    ser=serial.Serial(comport)
    ser.baudrate=baudrate

def setpos(n,angle):
    packet=chr(255)+chr(n)+chr(angle)
    ser.write(packet)
    cmd=str(n)+","+str(angle)+"\n"
    logfile.write(cmd)




###Begin Main###
def main(stdscr):
        def get_param(prompt_string):
         curses.echo()
         stdscr.clear()
         stdscr.border(1)
         stdscr.addstr(2, 2, prompt_string)
         stdscr.refresh()
         input = stdscr.getstr(10, 10, 60)
         return input

        global log,logfile,baudrate,comport
        x = 0
        sercon(baudrate,comport)
        while x != ord('4'):
            stdscr.clear()
            stdscr.border(0)
            stdscr.addstr(1, 1, 'Curses Servo control by Auzie Morgan')
            stdscr.addstr(2, 2, '(1)-change Servo control com:'+str(comport)+' baud:'+str(baudrate))
            stdscr.addstr(3, 2, '(2)-change logfile:'+str(logfile)+' ')
            stdscr.addstr(4, 4, 'Servo 0 =(a+/z-) 5 Current:'+str(servo[0][1]))
            stdscr.addstr(5, 4, 'Servo 1 =(s+/x-) 5 Current:'+str(servo[1][1]))
            stdscr.addstr(6, 4, 'Servo 2 =(d+/c-) 5 Current:'+str(servo[2][1]))
            stdscr.addstr(7, 4, 'Servo 3 =(f+/v-) 5 Current:'+str(servo[3][1]))
            stdscr.addstr(8, 4, 'Servo 4 =(g+/b-) 5 Current:'+str(servo[4][1]))
            stdscr.addstr(9, 4, 'Servo 5 =(h+/n-) 5 Current:'+str(servo[5][1]))
            stdscr.addstr(10, 4, "4 - Exit")
            stdscr.refresh()
            x = stdscr.getch()

            if x == ord('a'):
              servo[0][1]=int(servo[0][1])+5
              setpos(servo[0][0],servo[0][1])
            if x == ord('z'):
              servo[0][1]=int(servo[0][1])-5
              setpos(servo[0][0],servo[0][1])
            if x == ord('s'):
              servo[1][1]=int(servo[1][1])+5
              setpos(servo[1][0],servo[1][1])
            if x == ord('x'):
              servo[1][1]=int(servo[1][1])-5
              setpos(servo[1][0],servo[1][1])
            if x == ord('d'):
              servo[2][1]=int(servo[2][1])+5
              setpos(servo[2][0],servo[2][1])
            if x == ord('c'):
              servo[2][1]=int(servo[2][1])-5
              setpos(servo[2][0],servo[2][1])
            if x == ord('f'):
              servo[3][1]=int(servo[3][1])+5
              setpos(servo[3][0],servo[3][1])
            if x == ord('v'):
              servo[3][1]=int(servo[3][1])-5
              setpos(servo[3][0],servo[3][1])
            if x == ord('g'):
              servo[4][1]=int(servo[4][1])+5
              setpos(servo[4][0],servo[4][1])
            if x == ord('b'):
              servo[4][1]=int(servo[4][1])-5
              setpos(servo[4][0],servo[4][1])
            if x == ord('h'):
              servo[5][1]=int(servo[5][1])+5
              setpos(servo[5][0],servo[5][1])
            if x == ord('n'):
              servo[5][1]=int(servo[5][1])-5
              setpos(servo[5][0],servo[5][1])
            if x == ord('1'):
              ser.close()
              baudrate=get_param("Type new baudrate:")
              comport=get_param("Type new comport:")
              sercon(baudrate,comport)
            if x == ord('2'):
              logfile.close()
              log=get_param("Type new logfile name:")
              logfile=open(log,"w")

            stdscr.clear()
            curses.echo()
            curses.endwin()
            logfile.close()
###End Main###
curses.wrapper(main)
exit()

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-644482775693834189?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/wr1KU0lyhBaxeFGEdoUAPTU0JVE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wr1KU0lyhBaxeFGEdoUAPTU0JVE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/wr1KU0lyhBaxeFGEdoUAPTU0JVE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/wr1KU0lyhBaxeFGEdoUAPTU0JVE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/OZ5P_ry-Nks" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/644482775693834189/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=644482775693834189" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/644482775693834189?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/644482775693834189?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/OZ5P_ry-Nks/new-test-command-python-curses-and.html" title="New test command, Python Curses and pyserial for servo control" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_rTBBe6IRTAU/TS9za0EJDOI/AAAAAAAAAF4/Nq6GWimuriI/s72-c/pycursesv1.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2011/01/new-test-command-python-curses-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUFRH85fCp7ImA9Wx9QF04.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-4186661687149735007</id><published>2010-12-30T09:37:00.000-08:00</published><updated>2010-12-30T10:36:55.124-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-12-30T10:36:55.124-08:00</app:edited><title>Getting restarted on the BiPed</title><content type="html">Ok, &lt;br /&gt;
I'll revise this a bit more before I'm done including pictures and video links.  Here is what I'm working on / with.  &lt;a href="http://ottobelden.blogspot.com/search/label/Robotics"&gt;My good buddy Otto&lt;/a&gt; got back to me with some clean-up on the Biped frame / feet.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_gCM75VJbPw0/TOljXV23aJI/AAAAAAAAAcw/Cym61_8L9_o/s320/Robot+Legs.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/_gCM75VJbPw0/TOljXV23aJI/AAAAAAAAAcw/Cym61_8L9_o/s320/Robot+Legs.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Which is much better than before I handed it over to him :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_gCM75VJbPw0/TOlc2Cpy1yI/AAAAAAAAAcs/MlXSYgLVXLA/s320/Biped+Robot.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_gCM75VJbPw0/TOlc2Cpy1yI/AAAAAAAAAcs/MlXSYgLVXLA/s320/Biped+Robot.JPG" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&amp;nbsp;I've decided this time to run all testing etc using the Hawkboard + usb hub -&amp;gt; robot.  This rig will be controlled over tcp/ip and serial links.  The Hawkboard set-up is going to be basically the same as the &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0CBYQFjAA&amp;amp;url=http%3A%2F%2Felinux.org%2FHawkboard%2FBeginnersGuide&amp;amp;rct=j&amp;amp;q=Hawkboard%20Beginners%20guide&amp;amp;ei=HNEcTYDcCYbmsQOg_uHdAg&amp;amp;usg=AFQjCNHhz0R_j3V0fIllGMG4qeDvTGe5_Q&amp;amp;sig2=VVAIq6tv9gd0ceZOXNod8Q&amp;amp;cad=rja"&gt;Beginners Guide&lt;/a&gt;.  On the HawkBoard's image (on an sd card right now) I have added ncurses, kernel source, python, opencv, sphinxs and speech.  Still missing is a good way to do audio capture(Who decided not to have Mic in on the Hawkbaord is a nut).  What I will be doing next is a testing rig (aka guide wires to prevent falling) as well as breadboarding the servo hookups.&lt;br /&gt;
&lt;br /&gt;
Hawkboard runs a usb hub, ibmcam, two serial to usb converters and is controlled via Ethernet and serial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stay tuned!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-4186661687149735007?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/lrLUPw7qfu4Xh9_Fr0RCyh5HpmM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lrLUPw7qfu4Xh9_Fr0RCyh5HpmM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/lrLUPw7qfu4Xh9_Fr0RCyh5HpmM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/lrLUPw7qfu4Xh9_Fr0RCyh5HpmM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/BLICYzUqAdI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/4186661687149735007/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=4186661687149735007" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/4186661687149735007?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/4186661687149735007?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/BLICYzUqAdI/getting-restarted-on-biped.html" title="Getting restarted on the BiPed" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_gCM75VJbPw0/TOljXV23aJI/AAAAAAAAAcw/Cym61_8L9_o/s72-c/Robot+Legs.JPG" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/12/getting-restarted-on-biped.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8HQnk-eip7ImA9Wx5aFE4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-5507727749331095151</id><published>2010-11-10T15:47:00.000-08:00</published><updated>2010-11-10T15:47:13.752-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-10T15:47:13.752-08:00</app:edited><title>My Challenge to America, stop falling behind the world in robotics.</title><content type="html">Toyota Robot Violinist, not a Ford? Or MIT?&lt;br /&gt;
&lt;br /&gt;
 We need to expand the number of youths and adults experimenting in and producing robotics innovations and innovations in general.&lt;br /&gt;
&lt;br /&gt;
&lt;h1 id="watch-headline-title"&gt;&lt;span class="" dir="ltr" id="eow-title" title="Robot Violinist"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;
&lt;object height="385" width="480"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EzjkBwZtxp4?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/EzjkBwZtxp4?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Part of my point in running this blog is to encourage folks to try building robots and electronics.  Who knows, you could be the next robot of the year.. So get out there, visit the vendors, leave me comments, questions.. but Innovate..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-5507727749331095151?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/f_VOC53UXDarYYvaDpmLrMOK--k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f_VOC53UXDarYYvaDpmLrMOK--k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/f_VOC53UXDarYYvaDpmLrMOK--k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/f_VOC53UXDarYYvaDpmLrMOK--k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/B9vlxFH1dZw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/5507727749331095151/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=5507727749331095151" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/5507727749331095151?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/5507727749331095151?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/B9vlxFH1dZw/my-challenge-to-america-stop-falling.html" title="My Challenge to America, stop falling behind the world in robotics." /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/11/my-challenge-to-america-stop-falling.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IGQXY8fip7ImA9Wx5WF00.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-3296505312515721784</id><published>2010-09-28T12:16:00.000-07:00</published><updated>2010-09-28T12:18:40.876-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-28T12:18:40.876-07:00</app:edited><title>SparkFun has added Chumby parts and hacking board!</title><content type="html">Personally I haven't done much with this yet, but I have seen it and read up on it.  Honestly it could lead to another explosion the likes of Arduino.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://wiki.ladyada.net/_media/chumbyhandbig.jpg?w=600" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://wiki.ladyada.net/_media/chumbyhandbig.jpg?w=600" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Low cost like the Hawkboard but with many advantages / disadvantages.. I'll write more later..&lt;br /&gt;
PS: They also have refurbished Chumby v1 boards ~40$ !!&amp;nbsp; For those who don't mind not having all the breakout pins seen above..&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.sparkfun.com/commerce/product_info.php?products_id=10106"&gt;Sparkfun Chumby&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adafruit.com/index.php?main_page=index&amp;amp;cPath=46"&gt;Adafruit Chumby stuff&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.adafruit.com/index.php?main_page=index&amp;amp;cPath=46"&gt;Make Chumby stuff&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Get your Chumby on :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-3296505312515721784?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/tSpNkIRYEXs8i8TlkDrxsa9tSac/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tSpNkIRYEXs8i8TlkDrxsa9tSac/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/tSpNkIRYEXs8i8TlkDrxsa9tSac/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/tSpNkIRYEXs8i8TlkDrxsa9tSac/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/HOqtgUWp9d4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/3296505312515721784/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=3296505312515721784" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3296505312515721784?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/3296505312515721784?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/HOqtgUWp9d4/sparkfun-has-added-chumby-parts-and.html" title="SparkFun has added Chumby parts and hacking board!" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/09/sparkfun-has-added-chumby-parts-and.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIFQn47fip7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-6584313761423117018</id><published>2010-09-09T07:00:00.000-07:00</published><updated>2011-02-06T12:01:53.006-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T12:01:53.006-08:00</app:edited><title>Hawk board notes, nfs booting..</title><content type="html">Here are some fragments from a round of nfs booting the hawkboard.  I believe this was aimed at booting the Angstrom test images.&lt;br /&gt;
&lt;br /&gt;
Uboot commands on the Hawkboard,&lt;br /&gt;
&lt;pre class="brush: c"&gt;set ipaddr 192.168.2.200
set serverip 192.168.2.35
tftp 0xc0900000 uImage

setenv bootargs "mem=128M console=ttyS2,115200n8 root=/dev/nfs nfsroot=192.168.2.35:/nfsroot ip=dhcp"

setenv bootcmd 'setenv bootargs $bootargsc0008000_nfs;tftp c0008000 uImage; bootm c0008000'

setenv bootcmd 'setenv bootargs $bootargs;tftp c0700000 uImage; bootm c0700000'


setenv bootargs "console=ttyS2,115200n8 console=tty1 noinitrd root=/dev/sda1 rootwait rw init=/sbin/init"mmcblk0

set ipaddr 192.168.2.200
set serverip 192.168.2.35
tftp 0xc0900000 uImage
setenv bootargs "console=ttyS2,115200n8 noinitrd root=/dev/mmcblk0p1 rootwait rw init=/sbin/init ip=192.168.2.200"
setenv bootcmd 'setenv bootargs $bootargs;tftp c0900000 uImage; bootm c0900000'
&lt;/pre&gt;I'll add more / comment this out later..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-6584313761423117018?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/iXh16hg7Gm8YHeVNQqRSi0gN1mI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iXh16hg7Gm8YHeVNQqRSi0gN1mI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/iXh16hg7Gm8YHeVNQqRSi0gN1mI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/iXh16hg7Gm8YHeVNQqRSi0gN1mI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/MIg_mu4h-wc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/6584313761423117018/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=6584313761423117018" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6584313761423117018?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6584313761423117018?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/MIg_mu4h-wc/hawk-board-notes-nfs-booting.html" title="Hawk board notes, nfs booting.." /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/09/hawk-board-notes-nfs-booting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYGRHk9cSp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-8685699761507765587</id><published>2010-08-27T19:55:00.000-07:00</published><updated>2011-02-06T11:55:25.769-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:55:25.769-08:00</app:edited><title>Working wxpython example servo sliders code for arduino</title><content type="html">Playing catchup reconstructing ubuilt-bots after it expired on godaddy onto blogger..&lt;br /&gt;
&lt;br /&gt;
Here is my Python wxpython slider code example.&amp;nbsp; This code talks to my arduino rc servo controller code example and makes testing various servo positions easier / more user friendly.&amp;nbsp; Its also a fine example of wxpython, simple and fairly easy to follow.&lt;br /&gt;
&lt;pre class="brush: python"&gt;#!/usr/bin/python
#^-- edit based on your system type / settings
#wxpython example, by Auzie Morgan
#This simple example sends the slider states to the SetPos serial communication object.
#This demonstrates PySerial, wxPython, lists, tuples, string encoding and more.
#It is intended to work with my Arduino code but can be adapted to many applications.
#Fragments that helped me put this together came from the Original Aurduino Servo code and from 
#forum postings in Pololu's user forums.
#
 
import serial  # import PySerial libraries
import wx
import time
usbport = '/dev/ttyUSB2'
#^--Edit based on your OS type and active serial port.
ser = serial.Serial(usbport, 9600, timeout=1)
#^--Edit based on speed options type of port etc.
print ser
 
'''
Still a bit quirky at least with my arduino code as it stands.  This code was derived from a Pololu forum post.  Modified to suit my interests and should work on linux or windows machines.
'''
 
 
 
def SetPos(SERVO,ANGLE):          
    '''Moves the specified servo to the supplied angle.
 
    Arguments:
        servo
          the servo number to command, an integer from 1-4
        angle
          the desired servo angle, an integer from 0 to 180
 
    (e.g.) &amp;gt;&amp;gt;&amp;gt; servo.move(2, 90)
           ... # "move servo #2 to 90 degrees"'''
    print "SetPos called"
    if (0 &amp;lt;= ANGLE &amp;lt;= 180):
        ser.write(chr(255))
        ser.write(chr(SERVO))
        ser.write(chr(ANGLE))
    print "sending 255",SERVO,ANGLE 
 
 
 
class MyPanel(wx.Panel):
 
    def __init__(self, parent, id):
        self.lpos1 = 127
        self.lpos2 = 127
        self.lpos3 = 127
        self.lpos4 = 127
        self.lpos5 = 127
        self.lpos6 = 127
        self.lpos7 = 127
        self.lpos8 = 127  
        wx.Panel.__init__(self, parent, id)
        self.SetBackgroundColour("white")
        self.slider1 = wx.Slider(self, 0, 127, 0, 180, (100, 80), (50, 250),
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider2 = wx.Slider(self, 0, 127, 0, 180, (200, 80), (50, 250),                                                                              
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider3 = wx.Slider(self, 0, 127, 0, 180, (300, 80), (50, 250),                                                                              
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider4 = wx.Slider(self, 0, 127, 0, 180, (400, 80), (50, 250),
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider5 = wx.Slider(self, 0, 127, 0, 180, (500, 80), (50, 250),
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider6 = wx.Slider(self, 0, 127, 0, 180, (600, 80), (50, 250),                                                                              
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider7 = wx.Slider(self, 0, 127, 0, 180, (700, 80), (50, 250),                                                                              
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)
        self.slider8 = wx.Slider(self, 0, 127, 0, 180, (800, 80), (50, 250),
            wx.SL_VERTICAL | wx.SL_AUTOTICKS | wx.SL_LABELS)                                                                             
        self.Bind(wx.EVT_SLIDER, self.ServoUpdate)
 
 
    def ServoUpdate(self, event):  
        self.pos1 = self.slider1.GetValue()
        self.pos2 = self.slider2.GetValue()
        self.pos3 = self.slider3.GetValue()
        self.pos4 = self.slider4.GetValue()
        self.pos5 = self.slider5.GetValue()
        self.pos6 = self.slider6.GetValue()
        self.pos7 = self.slider7.GetValue()
        self.pos8 = self.slider8.GetValue()
 
        if (self.pos1 != self.lpos1):
            SetPos(0,self.pos1)
        if (self.pos2 != self.lpos2):
            SetPos(1,self.pos2)
        if (self.pos3 != self.lpos3):
            SetPos(2,self.pos3)
        if (self.pos4 != self.lpos4):
            SetPos(3,self.pos4) 
        if (self.pos5 != self.lpos5):
            SetPos(4,self.pos5)
        if (self.pos6 != self.lpos6):
            SetPos(5,self.pos6)
        if (self.pos7 != self.lpos7):
            SetPos(6,self.pos7)
        if (self.pos8 != self.lpos8):
            SetPos(7,self.pos8)
 
        self.lpos1 = self.pos8
        self.lpos2 = self.pos8
        self.lpos3 = self.pos8
        self.lpos4 = self.pos8
        self.lpos5 = self.pos8
        self.lpos6 = self.pos8
        self.lpos7 = self.pos8
        self.lpos8 = self.pos8        
 
app = wx.PySimpleApp()
 
frame = wx.Frame(None, -1, "Simple Servo Controller", size = (950, 440))
 
MyPanel(frame,-1)
 
frame.Show(True)
 
app.MainLoop()
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-8685699761507765587?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/nDCqE_LhSgOD_q8UNq8PDXPG-Sg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDCqE_LhSgOD_q8UNq8PDXPG-Sg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/nDCqE_LhSgOD_q8UNq8PDXPG-Sg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/nDCqE_LhSgOD_q8UNq8PDXPG-Sg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/fwQPIrx82Sw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/8685699761507765587/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=8685699761507765587" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8685699761507765587?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8685699761507765587?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/fwQPIrx82Sw/working-wxpython-example-servo-sliders.html" title="Working wxpython example servo sliders code for arduino" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/working-wxpython-example-servo-sliders.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUFQHw9eyp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-2705258600289184612</id><published>2010-08-27T12:09:00.000-07:00</published><updated>2011-02-06T11:56:51.263-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T11:56:51.263-08:00</app:edited><title>Arduino, Scott Mini Servo / motor test 2</title><content type="html">At this stage there were two controllers, one for motors and one for servos.  The motor controller that drives the tank treads was Arduino based with the TB6612FNG Breakout board from Sparkfun.  The servos were ran via a Scott Mini. I actually drove the tank motor to death, either torque or a bad choice of lubricant lead to the Tamia gearbox fracturing.&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" style="background-image: url(http://i1.ytimg.com/vi/LcfKuCkxv88/hqdefault.jpg);" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/LcfKuCkxv88?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/LcfKuCkxv88?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
Here is the Arduino test Code for the base,&lt;br /&gt;
&lt;pre class="brush: cpp"&gt;

int pos = 0;

const int motorAPin1 = 8;   // AIN1
const int motorAPin2 = 7;   // AIN2
const int motorBPin1 = 12;  // BIN1
const int motorBPin2 = 13;  // BIN2
const int enablePin = 2;    // H-bridge enable pin
const int PWMA = 3;
const int PWMB = 5;

void setup() {
    Serial.begin(9600);
    establishContact();
    // set outputs:
    pinMode(motorAPin1, OUTPUT);
    pinMode(motorAPin2, OUTPUT);
    pinMode(motorBPin1, OUTPUT);
    pinMode(motorBPin2, OUTPUT);
    pinMode(enablePin, OUTPUT);
    pinMode(PWMA, OUTPUT);
    pinMode(PWMB, OUTPUT);
    // set enablePin high so that motor can turn on:
    digitalWrite(enablePin, HIGH);
    
}

void loop() {
    Serial.println("First Loop");
    digitalWrite(motorAPin1, LOW);
    digitalWrite(motorAPin2, HIGH);
    for(pos = 10; pos &lt; 270; pos += 5)  // goes from 0 degrees to 180 degrees 
    {                                  // in steps of 1 degree 
    Serial.print("PWMA");
    Serial.println(pos, DEC);

    analogWrite(PWMA, pos);              // tell servo to go to position in variable 'pos' 
    delay(30000);                       // waits 15ms for the servo to reach the position 
     }
    pos = 0;
    delay(15000);
    Serial.println("Second Loop");
    digitalWrite(motorAPin1, HIGH);
    digitalWrite(motorAPin2, LOW);
    for(pos = 10; pos &lt; 270; pos += 5)  // goes from 0 degrees to 180 degrees 
    {                                  // in steps of 1 degree 

    Serial.print("PWMA");
    Serial.println(pos, DEC);
    analogWrite(PWMA, pos);              // tell servo to go to position in variable 'pos' 
    delay(30000);                       // waits 15ms for the servo to reach the position 
     }
    pos = 0;

}

void establishContact() {
  while (Serial.available() &lt;= 0) {
    Serial.println("0,0,0");   // send an initial string
    delay(300);
  }
}
&lt;/pre&gt;

And here is the later ascii over serial control for the Arduino,
&lt;pre class="brush: python"&gt;

int v = 0;

const int motorAPin1 = 8;   // AIN1
const int motorAPin2 = 7;   // AIN2
const int motorBPin1 = 12;  // BIN1
const int motorBPin2 = 13;  // BIN2
const int enablePin = 2;    // H-bridge enable pin
const int PWMA = 3;
const int PWMB = 5;

void setup() {
    Serial.begin(9600);
    establishContact();
    // set outputs:
    pinMode(motorAPin1, OUTPUT);
    pinMode(motorAPin2, OUTPUT);
    pinMode(motorBPin1, OUTPUT);
    pinMode(motorBPin2, OUTPUT);
    pinMode(enablePin, OUTPUT);
    pinMode(PWMA, OUTPUT);
    pinMode(PWMB, OUTPUT);
    // set enablePin high so that motor can turn on:
    digitalWrite(enablePin, HIGH);
    
}

void loop()
{
 if ( Serial.available()) {
    char ch = Serial.read();
    Serial.println(ch);
    switch(ch) {
      case '0'...'9':
        Serial.println("Got case Power");
        v = 0 + ch - '0';
        v = v*29;
        Serial.println(v, DEC);
        break;
      case 'f':
        Serial.println("Got case F");
        Serial.println(v, DEC);
        digitalWrite(enablePin, HIGH);
        digitalWrite(motorAPin1, HIGH);
        digitalWrite(motorAPin2, LOW);
        digitalWrite(motorBPin1, HIGH);
        digitalWrite(motorBPin2, LOW);
        analogWrite(PWMA, v);
        analogWrite(PWMB, v);

        break;
      case 'b':
        Serial.println("Got case B");
        Serial.println(v, DEC);
        digitalWrite(enablePin, HIGH);
        digitalWrite(motorAPin1, LOW);
        digitalWrite(motorAPin2, HIGH);
        digitalWrite(motorBPin1, LOW);
        digitalWrite(motorBPin2, HIGH);
        analogWrite(PWMA, v);
        analogWrite(PWMB, v);
        break;
      case 'l':
        Serial.println("Got case l");
        Serial.println(v, DEC);
        digitalWrite(enablePin, HIGH);
        digitalWrite(motorAPin1, LOW);
        digitalWrite(motorAPin2, HIGH);
        digitalWrite(motorBPin1, HIGH);
        digitalWrite(motorBPin2, LOW);
        analogWrite(PWMA, v);
        analogWrite(PWMB, v);

        break;
      case 'r':
        Serial.println("Got case r");
        Serial.println(v, DEC);
        digitalWrite(enablePin, HIGH);
        digitalWrite(motorAPin1, HIGH);
        digitalWrite(motorAPin2, LOW);
        digitalWrite(motorBPin1, LOW);
        digitalWrite(motorBPin2, HIGH);
        analogWrite(PWMA, v);
        analogWrite(PWMB, v);

        break;
      case 's':
        Serial.println("Got case Stop");
        digitalWrite(motorAPin1, LOW);
        digitalWrite(motorAPin2, LOW);
        digitalWrite(motorBPin1, LOW);
        digitalWrite(motorBPin2, LOW);
        analogWrite(PWMA, v);
        analogWrite(PWMB, v);
        digitalWrite(enablePin, LOW);

        break;
    }
 }
}

void establishContact() {
  while (Serial.available() &lt;= 0) {
    Serial.println("helo");   // send an initial string
    delay(300);
  }
}


&lt;/pre&gt;

For talking to the servos, at least in the beginning I used this rather popular mutation of some scott mini perl script.  I call it Servo Control 2 because I cleaned up the original and extended it to handle all 8 channels of the Scott Mini.  Of course my wxpython version should also work just fine as would my test-command python script. The perl script requires TK and you must pipe its output to the serial port as it doesn't use an actual perl serial module or functions.

&lt;pre class="brush: perl"&gt;#!/usr/bin/perl -w

# RobotControl is a program for controlling Robot Maxamilian's servos.
# Copyright (C) 1999  Patrick M. Rael
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.

#
# Use the Tk package
#
use Tk;


#
# Create the Main window, with a Menu of a few basic options, and a frame
#
my $mw = new MainWindow(-width  =&gt; '400',
                        -height =&gt; '400');
my $f = $mw-&gt;Frame(-relief =&gt; 'raised',
                   -background =&gt; 'blue2',
                   -borderwidth =&gt; 2);
$f-&gt;pack(-side =&gt; 'top',
         -anchor =&gt; 'n',
         -expand =&gt; 1,
         -fill =&gt; 'x');
my $fileMenu = $f-&gt;Menubutton(-text =&gt; "File",
                              -tearoff =&gt; 0,
                              -background =&gt; 'blue2',
                              -menuitems =&gt; [
                                      ['command' =&gt; "Quit",
                                       -command  =&gt; sub { exit } ]
                                   ])-&gt;pack( -side =&gt; 'left');

#
# Load several pictures of RMax
#


my $f2 = $mw-&gt;Frame(-relief =&gt; 'raised',
                    -borderwidth =&gt; 1)-&gt;pack();


#
# Create the Scale bars
#
$S0  = createScalebar($f2, "Servo #1",   0,  0,254,  0,0);
$S1  = createScalebar($f2, "Servo #2",   1,  0,254,  0,1);
$S2  = createScalebar($f2, "Servo #3",   2,  0,254,  1,0);
$S3  = createScalebar($f2, "Servo #4",   3,  0,254,  1,1);
$S4  = createScalebar($f2, "Servo #5",   4,  0,254,  2,0);
$S5  = createScalebar($f2, "Servo #6",   5,  0,254,  2,1);
$S6  = createScalebar($f2, "Servo #7",   6,  254,0,  3,0);
$S7  = createScalebar($f2, "Servo #8",   7,  0,254,  3,1);
$S13 = createScalebar($f2, "S1-3",  -1,  0,254,  4,0);
$S57 = createScalebar($f2, "S5-7",  -1,  0,254,  4,1);



$S13-&gt;configure(-command =&gt;  [\&amp;vscale_cb, $S0, $S2]);
$S57-&gt;configure(-command =&gt; [\&amp;vscale_cb, $S6, $S4]);



#
# Enter the main graphics event loop
#
MainLoop;


#
# Subroutine scale_cb() - Callback for a Scale bar change.
#
#     $sid [ServoID] is an integer I define from 0-7+ which is actually
#           a port number of the Mini-SSC-II.
#     $value is the value 0-254 of the Scale bar.  It seems to be passed in
#           Magically by Perl/Tk because I don't specify it.  What luck!
#
sub scale_cb {
    my ($sid, $value) = @_;

    #
    # Create a Packet of bytes: #255, Servo, Position
    #
    my $ch_sop = chr(255);     # char, start-of-packet, sop
    my $ch_sid = chr($sid);    # char, Servo-ID, sid
    my $ch_val = chr($value);  # char, Servo Position 0-254, val
    my $packet = "$ch_sop$ch_sid$ch_val";
    print "$packet";
}


#
# Subroutine vscale_cb() - Callback for driving two other servos.
#
sub vscale_cb {
    my ($slave1,$slave2,$value) = @_;

    $slave1-&gt;set($value);
    $slave2-&gt;set($value);
}


#
# Subroutine createScalebar() - Creates a Scale bar.
#
sub createScalebar {
    my ($container, $label,$servoID,$from,$to,$row,$col) = @_;

    my $sb = $container-&gt;Scale(-from =&gt; $from,
                               -to   =&gt; $to,
                               -label =&gt; "$label",
                               -length =&gt; '200',
                               -showvalue =&gt; '1',
                               -tickinterval =&gt; '50',
                               -orient  =&gt; 'horizontal',
                               -background =&gt; 'blue2',
                               -trough =&gt; 'cyan1',
                               -command =&gt; [ \&amp;scale_cb, $servoID] );
    $sb-&gt;grid(-row    =&gt; "$row",
              -column =&gt; "$col");

    return $sb;

}


#
# Subroutine place_image() - Loads "Photo's"
#
sub place_image {
    my ($container,$file,$x,$y) = @_;

    my $photo = $container-&gt;Photo(-file =&gt; $file);
    my $image = $container-&gt;createImage($x,$y, -image =&gt; $photo);
}

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-2705258600289184612?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/G8T8cMO9QDbI5NZghHjEsl3bsuw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G8T8cMO9QDbI5NZghHjEsl3bsuw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/G8T8cMO9QDbI5NZghHjEsl3bsuw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/G8T8cMO9QDbI5NZghHjEsl3bsuw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/5LA8B6BoLaI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/2705258600289184612/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=2705258600289184612" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2705258600289184612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2705258600289184612?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/5LA8B6BoLaI/arduino-scott-mini-servo-motor-test-2.html" title="Arduino, Scott Mini Servo / motor test 2" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/arduino-scott-mini-servo-motor-test-2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMNQ3Y6eip7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-2851858414970005154</id><published>2010-08-27T12:07:00.002-07:00</published><updated>2011-02-06T12:01:32.812-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T12:01:32.812-08:00</app:edited><title>Four legged crawling robot gets walk, turn and run cycles..</title><content type="html">Ok, a while back I built this little monster.&amp;nbsp; I did some digging through my harddrive and found the python script I used to control the Scott Mini to make this guy walk, turn etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" style="background-image: url(http://i1.ytimg.com/vi/tm9tuRvOnDE/hqdefault.jpg);" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/tm9tuRvOnDE?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/tm9tuRvOnDE?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
There is no micro controller code here because all 8 servos were ran by the scott mini servo controller.  I got the scott mini from Jameco, other controllers like pololu's series can do the same thing and the script can be adapted to fit them.  Also my Arduino servo controller code would work well with this script.&lt;br /&gt;
&lt;br /&gt;
In addition to running this strait from my Ubuntu box (soon to go Fedora Core 13), I have ran this code via Ubuntu Jaunty on my Hawkboard as well as Angstrom Linux and Windows boxes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: python"&gt;#!/usr/bin/python
import time, sys, os, serial
 
#set up the serial port for action (0==COM1==ttyS0)
ser=serial.Serial('/dev/ttyUSB2')
ser.baudrate=9600
packet=0
 
def setpos(n,angle):
    packet=chr(255)+chr(n)+chr(angle)
    ser.write(packet)
 
def forward():
    STEP =[[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]]
    STEPLEN=len(STEP)
    #print "Resetting postions"
    for i in range(0,STEPLEN):
        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,170],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,170],[7,125]])
    STEP.extend([[0,125],[1,75],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,75],[2,125],[3,125],[4,125],[5,75],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,125],[4,85],[5,75],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,125],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,180],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,154],[3,180],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,154],[3,125],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,114],[1,125],[2,103],[3,125],[4,158],[5,125],[6,76],[7,129]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]])
 
 
    STEPLEN=len(STEP)
    for i in range(0,STEPLEN):
        time.sleep(.06)
        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
def runforward():
    STEP =[[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]]
    STEPLEN=len(STEP)
    #print "Resetting postions"
    for i in range(0,STEPLEN):
        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,170],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,170],[7,125]])
    STEP.extend([[0,125],[1,75],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,75],[2,125],[3,125],[4,125],[5,75],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,125],[4,85],[5,75],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,125],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,125],[3,180],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,154],[3,180],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,166],[1,125],[2,154],[3,125],[4,85],[5,125],[6,125],[7,129]])
    STEP.extend([[0,114],[1,125],[2,103],[3,125],[4,158],[5,125],[6,76],[7,129]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]])
 
 
    STEPLEN=len(STEP)
    for i in range(0,STEPLEN):
        time.sleep(.03)
        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
def left():
    STEP =[[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]]
    STEPLEN=len(STEP)
    #print "Resetting postions"
    for i in range(0,STEPLEN):
        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,203],[7,170]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,203],[7,129]])
    STEP.extend([[0,125],[1,125],[2,63],[3,170],[4,125],[5,125],[6,203],[7,129]])
    STEP.extend([[0,125],[1,125],[2,63],[3,125],[4,125],[5,63],[6,203],[7,129]])
    STEP.extend([[0,125],[1,125],[2,63],[3,125],[4,84],[5,63],[6,203],[7,129]])
    STEP.extend([[0,125],[1,68],[2,63],[3,125],[4,84],[5,125],[6,203],[7,129]])
    STEP.extend([[0,76],[1,125],[2,63],[3,125],[4,84],[5,125],[6,203],[7,129]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,129]])
    STEPLEN=len(STEP)
    for i in range(0,STEPLEN):
        time.sleep(.03)
        ##print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
 
def right():
    STEP =[[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,119]]
    STEPLEN=len(STEP)
    #print "Resetting postions"
    for i in range(0,STEPLEN):
#        #print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,119]])
    STEP.extend([[0,125],[1,56],[2,125],[3,125],[4,125],[5,125],[6,125],[7,119]])
    STEP.extend([[0,182],[1,56],[2,125],[3,125],[4,125],[5,125],[6,125],[7,119]])
    STEP.extend([[0,182],[1,125],[2,125],[3,125],[4,196],[5,60],[6,125],[7,119]])
    STEP.extend([[0,182],[1,125],[2,125],[3,180],[4,196],[5,125],[6,125],[7,177]])
    STEP.extend([[0,182],[1,125],[2,178],[3,125],[4,196],[5,125],[6,64],[7,119]])
    STEP.extend([[0,125],[1,125],[2,125],[3,125],[4,125],[5,125],[6,125],[7,119]])
 
 
 
    STEPLEN=len(STEP)
    for i in range(0,STEPLEN):
        time.sleep(.03)
#        print "Servo ID:"+str(STEP[i][0])+"Position:"+str(STEP[i][1])
        setpos(STEP[i][0],STEP[i][1])
 
 
os.popen('echo "My User, Grid bug one on line. Please, give me a direction F for forward,L for left turn,R for right turn" |espeak --stdin')
os.popen('echo "Capitol F for run forward" |espeak --stdin')
print "Please, give me a direction F for forward,L for left turn,R for right turn"
print "Capitol F for run forward"
 
readkey = None
while readkey != "x":
  readkey=raw_input('Need Input:')
  os.popen('echo "Need Input:" |espeak --stdin')
  print "Result:"+str(readkey)
  if readkey == "f":
   print "You told me forward!"
   os.popen('echo "Forward, yes my user" |espeak --stdin')
   forward()
  if readkey == "l":
   print "You told me left!"
   os.popen('echo "Left, yes my user" |espeak --stdin')
   left()
   left()
   left()
 
  if readkey == "r":
   print "You told me right!"
   os.popen('echo "Right, yes my user" |espeak --stdin')
   right()
   right()
   right()
 
  if readkey == "F":
   print "You told me Run forward!"
   os.popen('echo "Run little users run!" |espeak --stdin')
   runforward()
   runforward()
   runforward()
 
if readkey == "x":
    print "End Of Line!"
    os.popen('echo "End Of line!" |espeak --stdin')




&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-2851858414970005154?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ox9Sch7Zgma2N93VDkolr5zEnqU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ox9Sch7Zgma2N93VDkolr5zEnqU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ox9Sch7Zgma2N93VDkolr5zEnqU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ox9Sch7Zgma2N93VDkolr5zEnqU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/xdcTqK5ieC4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/2851858414970005154/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=2851858414970005154" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2851858414970005154?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/2851858414970005154?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/xdcTqK5ieC4/four-legged-crawling-robot-gets-walk.html" title="Four legged crawling robot gets walk, turn and run cycles.." /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/four-legged-crawling-robot-gets-walk.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8FQ3Y7eip7ImA9Wx5QEkU.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-6754617880083984606</id><published>2010-08-27T12:07:00.001-07:00</published><updated>2010-08-31T14:06:52.802-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-31T14:06:52.802-07:00</app:edited><title>New recording of the quadraped walking.</title><content type="html">This lil guy was done using a Scott Mini 8 servo controller and 8 servos, 7 futaba 1 Hi Tech. The body was done entirely in hobby metal with some standoffs and cut foam gasket material.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;object height="344" style="background-image: url(http://i2.ytimg.com/vi/EOaxzE31iec/hqdefault.jpg);" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/EOaxzE31iec?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/EOaxzE31iec?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;
The perl code here was used to figure out the positions needed for the various walk cycles.&amp;nbsp; I also at one point linked up the HawkBoard and was using it to drive the serial to usb addaptor controlling the bug(?).&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
#!/usr/bin/perl -w
 
# RobotControl is a program for controlling Robot Maxamilian's servos.
# Copyright (C) 1999  Patrick M. Rael
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
#
# Use the Tk package
#
use Tk;
 
 
#
# Create the Main window, with a Menu of a few basic options, and a frame
#
my $mw = new MainWindow(-width  =&amp;gt; '400',
                        -height =&amp;gt; '400');
my $f = $mw-&amp;gt;Frame(-relief =&amp;gt; 'raised',
                   -background =&amp;gt; 'blue2',
                   -borderwidth =&amp;gt; 2);
$f-&amp;gt;pack(-side =&amp;gt; 'top',
         -anchor =&amp;gt; 'n',
         -expand =&amp;gt; 1,
         -fill =&amp;gt; 'x');
my $fileMenu = $f-&amp;gt;Menubutton(-text =&amp;gt; "File",
                              -tearoff =&amp;gt; 0,
                              -background =&amp;gt; 'blue2',
                              -menuitems =&amp;gt; [
                                      ['command' =&amp;gt; "Quit",
                                       -command  =&amp;gt; sub { exit } ]
                                   ])-&amp;gt;pack( -side =&amp;gt; 'left');
 
#
# Load several pictures of RMax
#
 
 
my $f2 = $mw-&amp;gt;Frame(-relief =&amp;gt; 'raised',
                    -borderwidth =&amp;gt; 1)-&amp;gt;pack();
 
 
#
# Create the Scale bars
#
$S0            = createScalebar($f2, "Servo #1",      0,  0,254,  0,0);
$S1            = createScalebar($f2, "Servo #2",      1,  0,254,  0,1);
$S2            = createScalebar($f2, "Servo #3",      2,  0,254,  1,0);
$S3            = createScalebar($f2, "Servo #4",      3,  0,254,  1,1);
$S4            = createScalebar($f2, "Servo #5",       4,  0,254,  2,0);
$S5            = createScalebar($f2, "Servo #6",        5,  0,254,  2,1);
$S6            = createScalebar($f2, "Servo #7",          6,  0,254,  3,0);
$S7            = createScalebar($f2, "Servo #8",          7,  0,254,  3,1);
 
 
 
#
# Enter the main graphics event loop
#
MainLoop;
 
 
 
#
# Subroutine scale_cb() - Callback for a Scale bar change.
#
#     $sid [ServoID] is an integer I define from 0-7+ which is actually
#           a port number of the Mini-SSC-II.
#     $value is the value 0-254 of the Scale bar.  It seems to be passed in
#           Magically by Perl/Tk because I don't specify it.  What luck!
#
sub scale_cb {
    my ($sid, $value) = @_;
 
    #
    # Create a Packet of bytes: #255, Servo, Position
    #
    my $ch_sop = chr(255);     # char, start-of-packet, sop
    my $ch_sid = chr($sid);    # char, Servo-ID, sid
    my $ch_val = chr($value);  # char, Servo Position 0-254, val
    my $packet = "$ch_sop$ch_sid$ch_val";
    print "$packet";
}
 
 
#
# Subroutine vscale_cb() - Callback for driving two other servos.
#
sub vscale_cb {
    my ($slave1,$slave2,$value) = @_;
 
    $slave1-&amp;gt;set($value);
    $slave2-&amp;gt;set($value);
}
 
 
#
# Subroutine createScalebar() - Creates a Scale bar.
#
sub createScalebar {
    my ($container, $label,$servoID,$from,$to,$row,$col) = @_;
 
    my $sb = $container-&amp;gt;Scale(-from =&amp;gt; $from,
                               -to   =&amp;gt; $to,
                               -label =&amp;gt; "$label",
                               -length =&amp;gt; '200',
                               -showvalue =&amp;gt; '1',
                               -tickinterval =&amp;gt; '50',
                               -orient  =&amp;gt; 'horizontal',
                               -background =&amp;gt; 'blue2',
                               -trough =&amp;gt; 'cyan1',
                               -command =&amp;gt; [ \&amp;amp;scale_cb, $servoID] );
    $sb-&amp;gt;grid(-row    =&amp;gt; "$row",
              -column =&amp;gt; "$col");
 
    return $sb;
 
}
 
 
#
# Subroutine place_image() - Loads "Photo's"
#
sub place_image {
    my ($container,$file,$x,$y) = @_;
 
    my $photo = $container-&amp;gt;Photo(-file =&amp;gt; $file);
    my $image = $container-&amp;gt;createImage($x,$y, -image =&amp;gt; $photo);
}


&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
I will dig up the old walk command code later and edit this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-6754617880083984606?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_8TlilgVsY5UllcNqFNe2CxyXbI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_8TlilgVsY5UllcNqFNe2CxyXbI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_8TlilgVsY5UllcNqFNe2CxyXbI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_8TlilgVsY5UllcNqFNe2CxyXbI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/HHtN-Eijjh8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/6754617880083984606/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=6754617880083984606" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6754617880083984606?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6754617880083984606?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/HHtN-Eijjh8/new-recording-of-quadraped-walking.html" title="New recording of the quadraped walking." /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/new-recording-of-quadraped-walking.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcGQ384eCp7ImA9Wx5RGU4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-6720530612556444296</id><published>2010-08-27T12:07:00.000-07:00</published><updated>2010-08-27T12:07:02.130-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T12:07:02.130-07:00</app:edited><title>Exploring Arduino 1</title><content type="html">&lt;object style="background-image:url(http://i4.ytimg.com/vi/GpdFNaUsop0/hqdefault.jpg)"  width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/GpdFNaUsop0?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/GpdFNaUsop0?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-6720530612556444296?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5blEQSX2amAHIaQ60AHdomBojnw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5blEQSX2amAHIaQ60AHdomBojnw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5blEQSX2amAHIaQ60AHdomBojnw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5blEQSX2amAHIaQ60AHdomBojnw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/dNjS8byO7mI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/6720530612556444296/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=6720530612556444296" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6720530612556444296?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/6720530612556444296?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/dNjS8byO7mI/exploring-arduino-1.html" title="Exploring Arduino 1" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/exploring-arduino-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcESH84eyp7ImA9Wx5RGU4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-1811102682000528445</id><published>2010-08-27T12:06:00.003-07:00</published><updated>2010-08-27T12:06:49.133-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T12:06:49.133-07:00</app:edited><title>MigaMotors and the Arduino board</title><content type="html">&lt;object style="background-image:url(http://i3.ytimg.com/vi/jKP79E7HoXg/hqdefault.jpg)"  width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/jKP79E7HoXg?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/jKP79E7HoXg?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-1811102682000528445?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/M9xpHnWgQAIqLRfgL91x2sjM_6Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M9xpHnWgQAIqLRfgL91x2sjM_6Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/M9xpHnWgQAIqLRfgL91x2sjM_6Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/M9xpHnWgQAIqLRfgL91x2sjM_6Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/HSvF_mi1Jno" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/1811102682000528445/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=1811102682000528445" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1811102682000528445?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/1811102682000528445?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/HSvF_mi1Jno/migamotors-and-arduino-board.html" title="MigaMotors and the Arduino board" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/migamotors-and-arduino-board.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEACQHo8fyp7ImA9Wx9UEE8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-8016955590516993750</id><published>2010-08-27T12:06:00.002-07:00</published><updated>2011-02-06T12:06:01.477-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-06T12:06:01.477-08:00</app:edited><title>Hawkboard test</title><content type="html">Based on notes from &lt;a href="http://elinux.org/Hawkboard#Booting_Linux_Kernel_from_SD_OR_MMC"&gt;Booting_Linux_Kernel_from_SD_OR_MMC&lt;/a&gt;, which I will duplicate here.&amp;nbsp; Using an image built from the &lt;a href="http://www.angstrom-distribution.org/"&gt;Angstrom Linux&lt;/a&gt;.&amp;nbsp; I tested various basic functions of the Hawkboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object height="344" style="background-image: url(&amp;quot;http://i4.ytimg.com/vi/7vMHbORfN7Q/hqdefault.jpg&amp;quot;);" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/7vMHbORfN7Q?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/7vMHbORfN7Q?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
Additionally, though not shown in the video but will be reposted later I verified Android, Ubuntu Jaunty and will be exploring Fedora Embedded.&amp;nbsp; My main interest in this board is as&amp;nbsp; a main controller / networking link for robotics.&amp;nbsp; In my tests I loaded Python, Perl, php, ruby and a few other languages just to verify the potential of the board.&amp;nbsp; It has more than enough processing power to do more advanced AI like PyBrain, PyAIML and many other AI examples.&amp;nbsp; I also explored video capture, audio capture and output of both.&amp;nbsp; My findings were that the Hawkboard design was sufficiant it was lacking in driver support / integration in the multimedia area.&amp;nbsp; Additionally the Audio input it seems is stereo line in, shy of a mixer to boost a microphone input there is no other direct way to capture audio for speech recognition.&lt;br /&gt;
&lt;br /&gt;
Below is an excerpt of the relavent bits.&lt;br /&gt;
&lt;br /&gt;
There are a few gotchas,&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;If you write the kernel to nand you must clear, load u-boot and perform the kernel steps.&amp;nbsp; If you don't make certain uboot is in nand and peform a uImage (kernel) update / write you will have to reset the board using the uartboot as noted in the wiki.&lt;/li&gt;
&lt;li&gt;Kernel size is tricky to properly write a new kernel you need to make sure you clear, load and write with the right size ranges.&amp;nbsp; Otherwise your kernel will not load or won't load consistantly.&lt;/li&gt;
&lt;/ol&gt;Ok had some time this weekend, this is different slightly than my main video.&amp;nbsp; However I will be posting new videos shortly.&lt;br /&gt;
&lt;br /&gt;
&lt;h1 class="western"&gt;Ubuntu Jaunty on Hawkboard,&lt;/h1&gt;&lt;br /&gt;
TFTP/MMC Method,&lt;br /&gt;
Setting up the mmc card,&lt;br /&gt;
&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/KGG-mozGZa8?hl=en&amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/KGG-mozGZa8?hl=en&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt; &lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
This is very important, configuring a kernel or u-boot can gimp a board and force you to attempt to recover the board..&lt;br /&gt;
&lt;/B&gt;&lt;br /&gt;
&lt;pre class="brush: c"&gt;  hawkboard.org &gt; setenv serverip 172.24.156.199
  hawkboard.org &gt; setenv ipaddr 172.24.190.58
  hawkboard.org &gt; tftpboot 0xc0700000 u-boot_nand_ais.bin
  
  TFTP from server 172.24.156.199; our IP address is 172.24.190.58
  Filename 'u-boot_nand_ais.bin'.
  Load address: 0xc0700000
  Loading: #################################################################
           #################
  done
  Bytes transferred = 414988 (6550c hex)
  hawkboard.org &gt; nand erase

  NAND erase: device 0 whole chip
  OK
  hawkboard.org &gt; nand write.e 0xc0700000 0x20000 0x70000
    NAND write: device 0 offset 0x20000, size 0x70000
  458752 bytes written: OK
  hawkboard.org &gt;tftp c0700000 uImage
  hawkboard.org &gt;nand erase 200000 200000
  hawkboard.org &gt;nand write.e 0xc0700000 0x200000 0x200000
  ###Verify.. 
  hawkboard.org &gt;nand read.e 0xc0700000 0x200000 0x200000



&lt;/pre&gt;&lt;b&gt;&lt;br /&gt;
This is very important, configuring a kernel or u-boot can gimp a board and force you to attempt to recover the board..&lt;br /&gt;
&lt;/B&gt;&lt;br /&gt;
&lt;p&gt;Configuring and preping u-boot and the kernel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/oAglL7CbuDA?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/oAglL7CbuDA?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;/p&gt;&lt;pre class="brush: c"&gt;
hawkboard.org &gt; set serverip 192.168.2.24 

hawkboard.org &gt; setenv bootargs "mem=128M console=ttyS2,115200n8 root=/dev/mmcblk0p4 rootwait rw init=/sbin/init ip=192.168" 

hawkboard.org &gt; setenv bootcmd 'setenv bootargs $bootargs;tftp c0700000 uImage; bootm c0700000' 

&lt;/pre&gt;&lt;br /&gt;
&lt;pre class="brush: c"&gt;hawkboard.org &gt; boot 

TFTP from server 192.168.2.24; our IP address is 192.168.2.200 

Filename 'uImage'. 

Load address: 0xc0900000 

Loading: ################################################################# 

################################################################# 

################################################################# 

################################################################# 

################################################################# 

##################################################### 

done 

Bytes transferred = 1934036 (1d82d4 hex) 

## Booting kernel from Legacy Image at c0900000 ... 

Image Name:   Linux-2.6.32-rc6-00079-g55996fd- 

Image Type:   ARM Linux Kernel Image (uncompressed) 

Data Size:    1933972 Bytes =  1.8 MB 

Load Address: c0008000 

Entry Point:  c0008000 

Verifying Checksum ... OK 

Loading Kernel Image ... OK 

OK 



Starting kernel ... 



Linux version 2.6.32-rc6-00079-g55996fd-dirty (root@khasim-laptop) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #2 P9 

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177 

CPU: VIVT data cache, VIVT instruction cache 

Machine: OMAPL 138 Hawkboard.org 

Memory …... … . 

.. …. .. . . blah blah blah :)     

[ OK ]ting up console font and keymap...        

* Starting system log daemon...        

Ubuntu 9.04 Alok-PC ttyS2 


[ OK ]C login: 

[ OK ] * Starting kernel log daemon...        

[ OK ] * Starting OpenBSD Secure Shell server sshd        

[ OK ] * Starting periodic command scheduler crond
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-8016955590516993750?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bwdJ5ZbN1vcLMVQ0ylhfofasnSI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bwdJ5ZbN1vcLMVQ0ylhfofasnSI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bwdJ5ZbN1vcLMVQ0ylhfofasnSI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bwdJ5ZbN1vcLMVQ0ylhfofasnSI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/CLjHtREWZa8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/8016955590516993750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=8016955590516993750" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8016955590516993750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/8016955590516993750?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/CLjHtREWZa8/hawkboard-test.html" title="Hawkboard test" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/hawkboard-test.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcERn05fSp7ImA9Wx5QFk8.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-747055669623478392</id><published>2010-08-27T12:06:00.001-07:00</published><updated>2010-09-04T10:06:47.325-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-04T10:06:47.325-07:00</app:edited><title>ROB-09457-tamiya-arduino-hawkboard-scottmini.mov</title><content type="html">This was an early test not only of the motor driver I got from sparkfun(electronics supplier) it was also an early run at controlling things via the hawkboard.&lt;br /&gt;
 &lt;br /&gt;
&lt;object style="background-image:url(http://i4.ytimg.com/vi/gR3ULcgQc_A/hqdefault.jpg)"  width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gR3ULcgQc_A?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/gR3ULcgQc_A?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;
&lt;br /&gt;
This setup combined the arduino, rob motor controller and at on point my Scott mini till it fried. Later I moved servo controll over to the arduino as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-747055669623478392?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_mkuXZUXmWU5__Jd0xnkZADKB9E/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_mkuXZUXmWU5__Jd0xnkZADKB9E/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_mkuXZUXmWU5__Jd0xnkZADKB9E/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_mkuXZUXmWU5__Jd0xnkZADKB9E/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/YTtMh_fkvTo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/747055669623478392/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=747055669623478392" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/747055669623478392?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/747055669623478392?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/YTtMh_fkvTo/rob-09457-tamiya-arduino-hawkboard.html" title="ROB-09457-tamiya-arduino-hawkboard-scottmini.mov" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/rob-09457-tamiya-arduino-hawkboard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D04CRn06cCp7ImA9Wx5RGU4.&quot;"><id>tag:blogger.com,1999:blog-6475726489711554308.post-394185192494408554</id><published>2010-08-27T12:06:00.000-07:00</published><updated>2010-08-27T12:06:07.318-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-27T12:06:07.318-07:00</app:edited><title>ROB-09457-Tamiya-Arduino.m4v</title><content type="html">&lt;object style="background-image:url(http://i3.ytimg.com/vi/zSlA7U28clg/hqdefault.jpg)"  width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/zSlA7U28clg?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/zSlA7U28clg?fs=1&amp;amp;hl=en_US" width="425" height="344" allowScriptAccess="never" allowFullScreen="true" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6475726489711554308-394185192494408554?l=auzieman.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/L4rQMZOoNhQHmhxMCPf6NFFEXyA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L4rQMZOoNhQHmhxMCPf6NFFEXyA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/L4rQMZOoNhQHmhxMCPf6NFFEXyA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/L4rQMZOoNhQHmhxMCPf6NFFEXyA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/Auzieman/~4/lWk3nAbSfos" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://auzieman.blogspot.com/feeds/394185192494408554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6475726489711554308&amp;postID=394185192494408554" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/394185192494408554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6475726489711554308/posts/default/394185192494408554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/Auzieman/~3/lWk3nAbSfos/rob-09457-tamiya-arduinom4v.html" title="ROB-09457-Tamiya-Arduino.m4v" /><author><name>auzieman</name><uri>http://www.blogger.com/profile/15588367540271882215</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://bp3.blogger.com/_rTBBe6IRTAU/R2nM5Z3z9uI/AAAAAAAAABw/NmQgv92MNYA/S220/auzthumb.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://auzieman.blogspot.com/2010/08/rob-09457-tamiya-arduinom4v.html</feedburner:origLink></entry></feed>

