<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.midsouthmakers.org/index.php?action=history&amp;feed=atom&amp;title=Gubr</id>
	<title>Gubr - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.midsouthmakers.org/index.php?action=history&amp;feed=atom&amp;title=Gubr"/>
	<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;action=history"/>
	<updated>2026-05-01T04:28:32Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8387&amp;oldid=prev</id>
		<title>Dan9186: moved Gubr&#039;s Code (Brad&#039;s Robot) to Gubr: naming appropriately and adding redirects</title>
		<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8387&amp;oldid=prev"/>
		<updated>2011-05-07T22:45:40Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/a/Gubr%27s_Code_(Brad%27s_Robot)&quot; class=&quot;mw-redirect&quot; title=&quot;Gubr&amp;#039;s Code (Brad&amp;#039;s Robot)&quot;&gt;Gubr&amp;#039;s Code (Brad&amp;#039;s Robot)&lt;/a&gt; to &lt;a href=&quot;/a/Gubr&quot; title=&quot;Gubr&quot;&gt;Gubr&lt;/a&gt;: naming appropriately and adding redirects&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:45, 7 May 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Dan9186</name></author>
	</entry>
	<entry>
		<id>http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8386&amp;oldid=prev</id>
		<title>Dan9186: altering name</title>
		<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8386&amp;oldid=prev"/>
		<updated>2011-05-07T22:44:40Z</updated>

		<summary type="html">&lt;p&gt;altering name&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:44, 7 May 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox project&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Infobox project&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|project_name = Gubr&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;s Code (Brad&#039;s Robot)&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|project_name = Gubr&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|image = Gubr_01_Side_01.JPG&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|image = Gubr_01_Side_01.JPG&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|caption =  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|caption =  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dan9186</name></author>
	</entry>
	<entry>
		<id>http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8384&amp;oldid=prev</id>
		<title>Dan9186: wikifying the page a little and adding appropriate categories to make it show up in various locations</title>
		<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8384&amp;oldid=prev"/>
		<updated>2011-05-07T22:42:41Z</updated>

		<summary type="html">&lt;p&gt;wikifying the page a little and adding appropriate categories to make it show up in various locations&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:42, 7 May 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{Infobox project&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|project_name = Gubr&#039;s Code (Brad&#039;s Robot)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|image = Gubr_01_Side_01.JPG&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|caption = &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|owner = BradDunagan&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|version = 1.0&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|status = inprogress&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|start_date = Feb 11 2011&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|cost = &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Overview ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lately there has been quite a bit of interest expressed in microcontrollers by Midsouth Makers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an Arduino board but the microcontroller is the same as that of some Arduinos.  And according to Pololu, the library they provide is useful (to some degree, I suppose) on Arduinos.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lately there has been quite a bit of interest expressed in microcontrollers by Midsouth Makers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an Arduino board but the microcontroller is the same as that of some Arduinos.  And according to Pololu, the library they provide is useful (to some degree, I suppose) on Arduinos.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Gubr_01_Side_01.JPG]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller board is the &amp;quot;Orangutan SVP-1284 Robot Controller&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller board is the &amp;quot;Orangutan SVP-1284 Robot Controller&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 25:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is the program that runs on Gubr -&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is the program that runs on Gubr -&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Source Code ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;/*&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Dan9186</name></author>
	</entry>
	<entry>
		<id>http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8025&amp;oldid=prev</id>
		<title>BradDunagan at 22:46, 11 February 2011</title>
		<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8025&amp;oldid=prev"/>
		<updated>2011-02-11T22:46:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 22:46, 11 February 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lately there has been quite a bit of interest expressed in microcontrollers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an Arduino board but the microcontroller is the same as that of some Arduinos.  And according to Pololu, the library they provide is useful (to some degree, I suppose) on Arduinos.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Lately there has been quite a bit of interest expressed in microcontrollers &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;by Midsouth Makers&lt;/ins&gt;. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an Arduino board but the microcontroller is the same as that of some Arduinos.  And according to Pololu, the library they provide is useful (to some degree, I suppose) on Arduinos.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[File:Gubr_01_Side_01.JPG]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller board is the &amp;quot;Orangutan SVP-1284 Robot Controller&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The controller board is the &amp;quot;Orangutan SVP-1284 Robot Controller&amp;quot;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l11&quot;&gt;Line 11:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If there are any questions I will gladly elaborate and maybe add to this article.  My email is brad.dunagan@gmail.com.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;If there are any questions I will gladly elaborate and maybe add to this article.  My email is brad.dunagan@gmail.com.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is the &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;code &lt;/del&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Here is the &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;program that runs on Gubr &lt;/ins&gt;-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>BradDunagan</name></author>
	</entry>
	<entry>
		<id>http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8022&amp;oldid=prev</id>
		<title>BradDunagan: Created page with &quot;Lately there has been quite a bit of interest expressed in microcontrollers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an ...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.midsouthmakers.org/index.php?title=Gubr&amp;diff=8022&amp;oldid=prev"/>
		<updated>2011-02-11T21:20:09Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Lately there has been quite a bit of interest expressed in microcontrollers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an ...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Lately there has been quite a bit of interest expressed in microcontrollers. So, maybe the code that runs on my little robot, Gubr, will be useful to some.  Gubr does not use an Arduino board but the microcontroller is the same as that of some Arduinos.  And according to Pololu, the library they provide is useful (to some degree, I suppose) on Arduinos.&lt;br /&gt;
&lt;br /&gt;
The controller board is the &amp;quot;Orangutan SVP-1284 Robot Controller&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
I had not done any embedded work for quite a while so I was somewhat apprehensive about Gubr&amp;#039;s software side of the project.  But, I was pleasantly surprised by how things went.  The hard stuff is taken care of by the library.  I just looked at the examples and went from there.&lt;br /&gt;
&lt;br /&gt;
If you look at the listing below you see a big loop.  One of the things I was interested in was how much latency there might be in responses to certain things (like, the detection of an oncoming wall).  So I keep track of the loop time and display it periodically.  Its about 1 to 2 milliseconds.  Nearly all of that time is taken by the silly way I am reading the range sensors (see the &amp;lt;code&amp;gt;for ( iA = 0; ... )&amp;lt;/code&amp;gt; loop).  Otherwise the main loop time would probably be in the low micosecond range.  To be applicable I should display the longest time of any one loop, and possibly the average as I am doing now.&lt;br /&gt;
&lt;br /&gt;
I want the robot to move around, detect obstacles and provide data back to the PC.  The PC maintains records and tells the robot what to do.&lt;br /&gt;
&lt;br /&gt;
If there are any questions I will gladly elaborate and maybe add to this article.  My email is brad.dunagan@gmail.com.&lt;br /&gt;
&lt;br /&gt;
Here is the code -&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
         1         2         3         4         5         6         7         8&lt;br /&gt;
12345678901234567890123456789012345678901234567890123456789012345678901234567890&lt;br /&gt;
*/&lt;br /&gt;
#include    &amp;lt;pololu/orangutan.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include    &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include    &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include    &amp;lt;string.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#define IRSNS   5&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
const char  Bar_130 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_110 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_090 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_070 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_050 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_030 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_010 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
const char  Bar_000 [] PROGMEM =&lt;br /&gt;
{&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b00000,&lt;br /&gt;
    0b11111&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
void    PrintRangeBar ( int X, int Y, unsigned int Rng )&lt;br /&gt;
{&lt;br /&gt;
    lcd_goto_xy ( X, Y );&lt;br /&gt;
&lt;br /&gt;
    if ( Rng &amp;gt; 130 )  print_character ( 7 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt; 110 )  print_character ( 6 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;  90 )  print_character ( 5 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;  70 )  print_character ( 4 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;  50 )  print_character ( 3 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;  30 )  print_character ( 2 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;  10 )  print_character ( 1 );&lt;br /&gt;
    else&lt;br /&gt;
    if ( Rng &amp;gt;   0 )  print_character ( 0 );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main()&lt;br /&gt;
{&lt;br /&gt;
    unsigned int    AvgRng[6], iA, Sum, nSum;&lt;br /&gt;
&lt;br /&gt;
    unsigned long   TmPrv, TmNow, TmDelta, TmSum, TmCnt, TmBatt, TmPCChk;&lt;br /&gt;
&lt;br /&gt;
    char    Cmd [32], nCmdChars, bGotCmd;&lt;br /&gt;
&lt;br /&gt;
    char    Rsp [32], nRspChars, bSntRsp;&lt;br /&gt;
&lt;br /&gt;
    int     MtrSpdL, MtrSpdR;               //  Motors&amp;#039; speed.  -511 to +512&lt;br /&gt;
    int     MtrEncL, MtrEncR;               //  Motors&amp;#039; encoder count.&lt;br /&gt;
    int     MtrMovL, MtrMovR;               //  Motors&amp;#039; move-to encoder count.&lt;br /&gt;
    int     bMtrRng;                        //  While running better be &lt;br /&gt;
                                            //  connected to the PC.&lt;br /&gt;
    int     Batt;                           //  Battery millivolts.&lt;br /&gt;
&lt;br /&gt;
    lcd_init_printf();&lt;br /&gt;
&lt;br /&gt;
    lcd_load_custom_character ( Bar_130, 7 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_110, 6 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_090, 5 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_070, 4 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_050, 3 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_030, 2 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_010, 1 );&lt;br /&gt;
    lcd_load_custom_character ( Bar_000, 0 );&lt;br /&gt;
&lt;br /&gt;
    clear();&lt;br /&gt;
&lt;br /&gt;
    set_analog_mode ( MODE_8_BIT );&lt;br /&gt;
&lt;br /&gt;
    time_reset();&lt;br /&gt;
&lt;br /&gt;
    TmPrv = get_ms();       TmSum = TmCnt = TmBatt = TmPCChk = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    serial_set_baud_rate ( UART0, 9600 );&lt;br /&gt;
&lt;br /&gt;
    serial_receive ( UART0, Cmd, 32 );&lt;br /&gt;
&lt;br /&gt;
    bGotCmd = bSntRsp = nCmdChars = 0;&lt;br /&gt;
&lt;br /&gt;
    svp_set_mode ( SVP_MODE_ENCODERS );&lt;br /&gt;
&lt;br /&gt;
    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
    MtrEncL = MtrEncR = 0;      &lt;br /&gt;
    MtrMovL = MtrMovR = 0;      bMtrRng = 0;&lt;br /&gt;
&lt;br /&gt;
    while ( 1 )&lt;br /&gt;
    {&lt;br /&gt;
        for ( iA = 0; iA &amp;lt; 6; iA++ )&lt;br /&gt;
        {&lt;br /&gt;
            start_analog_conversion ( iA );&lt;br /&gt;
&lt;br /&gt;
            Sum = 0;    nSum = 0;&lt;br /&gt;
&lt;br /&gt;
            while ( 1 )&lt;br /&gt;
            {&lt;br /&gt;
                while ( analog_is_converting() )&lt;br /&gt;
                {&lt;br /&gt;
                    delay_us (  200 );&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                Sum += analog_conversion_result();&lt;br /&gt;
&lt;br /&gt;
                if ( ++nSum == 10 )  break;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            AvgRng[iA] = Sum / nSum;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ( bSntRsp )&lt;br /&gt;
        {&lt;br /&gt;
            if ( serial_send_buffer_empty ( UART0 ) )&lt;br /&gt;
            {&lt;br /&gt;
                bSntRsp = 0;&lt;br /&gt;
&lt;br /&gt;
                serial_receive ( UART0, Cmd, 32 );&lt;br /&gt;
&lt;br /&gt;
                bGotCmd = 0;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        else&lt;br /&gt;
        if ( (nCmdChars = serial_get_received_bytes ( UART0 )) != 0 )&lt;br /&gt;
        {&lt;br /&gt;
            bGotCmd = (Cmd[nCmdChars - 1] == &amp;#039;\0&amp;#039;);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        PrintRangeBar ( 0, 0, AvgRng[0] );&lt;br /&gt;
        PrintRangeBar ( 1, 0, AvgRng[1] );&lt;br /&gt;
        PrintRangeBar ( 2, 0, AvgRng[2] );&lt;br /&gt;
        PrintRangeBar ( 3, 0, AvgRng[3] );&lt;br /&gt;
        PrintRangeBar ( 4, 0, AvgRng[4] );&lt;br /&gt;
        PrintRangeBar ( 5, 0, AvgRng[5] );&lt;br /&gt;
&lt;br /&gt;
        if ( bGotCmd &amp;amp;&amp;amp; ! bSntRsp )&lt;br /&gt;
        {&lt;br /&gt;
            TmPCChk = get_ms();&lt;br /&gt;
&lt;br /&gt;
            lcd_goto_xy ( 14, 0 );      printf ( &amp;quot;%c &amp;quot;, Cmd[0] );&lt;br /&gt;
&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;C&amp;#039; )                //  Comm check.&lt;br /&gt;
            {&lt;br /&gt;
                strcpy ( Rsp, &amp;quot;Ok&amp;quot; );       nRspChars = 2;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;R&amp;#039; )    //  IR sensor ranges.&lt;br /&gt;
            {&lt;br /&gt;
                Rsp[0] = &amp;#039;R&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
                Rsp[1] = (unsigned char)AvgRng[0];&lt;br /&gt;
                Rsp[2] = (unsigned char)AvgRng[1];&lt;br /&gt;
                Rsp[3] = (unsigned char)AvgRng[2];&lt;br /&gt;
                Rsp[4] = (unsigned char)AvgRng[3];&lt;br /&gt;
                Rsp[5] = (unsigned char)AvgRng[4];&lt;br /&gt;
                Rsp[6] = (unsigned char)AvgRng[5];&lt;br /&gt;
                    &lt;br /&gt;
                nRspChars = 7;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;M&amp;#039; )    //  Set motors&amp;#039; speed.&lt;br /&gt;
            {&lt;br /&gt;
                MtrMovL = MtrMovR = 0;&lt;br /&gt;
&lt;br /&gt;
                char Spd [4];       Spd[3] = 0;&lt;br /&gt;
&lt;br /&gt;
                strncpy ( Spd, &amp;amp;Cmd[1], 3 );        MtrSpdL = atoi ( Spd ) * 8;&lt;br /&gt;
                strncpy ( Spd, &amp;amp;Cmd[4], 3 );        MtrSpdR = atoi ( Spd ) * 8;&lt;br /&gt;
&lt;br /&gt;
                if (    (MtrSpdL &amp;lt; -511) || (MtrSpdL &amp;gt; 512)&lt;br /&gt;
                     || (MtrSpdR &amp;lt; -511) || (MtrSpdR &amp;gt; 512) )&lt;br /&gt;
                {&lt;br /&gt;
                    strcpy ( Rsp, &amp;quot;E&amp;quot; );        //  Error&lt;br /&gt;
                    &lt;br /&gt;
                    nRspChars = 1;&lt;br /&gt;
&lt;br /&gt;
                    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    set_motors ( MtrSpdL, MtrSpdR );&lt;br /&gt;
&lt;br /&gt;
                    bMtrRng = MtrSpdL | MtrSpdR;&lt;br /&gt;
&lt;br /&gt;
                    sprintf ( Rsp, &amp;quot;M&amp;quot; );&lt;br /&gt;
                    &lt;br /&gt;
                    nRspChars = 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;E&amp;#039; )    //  Encoder counts.&lt;br /&gt;
            {&lt;br /&gt;
                sprintf ( Rsp, &amp;quot;E%05d%05d&amp;quot;, MtrEncL, MtrEncR );&lt;br /&gt;
                &lt;br /&gt;
                nRspChars = 11;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;V&amp;#039; )    //  Move.&lt;br /&gt;
            {&lt;br /&gt;
                MtrMovR = atoi ( &amp;amp;Cmd[14] );    Cmd[14] = 0;&lt;br /&gt;
                MtrSpdR = atoi ( &amp;amp;Cmd[11] );    Cmd[11] = 0;&lt;br /&gt;
                MtrMovL = atoi ( &amp;amp;Cmd[ 4] );    Cmd[ 4] = 0;&lt;br /&gt;
                MtrSpdL = atoi ( &amp;amp;Cmd[ 1] );&lt;br /&gt;
&lt;br /&gt;
                MtrSpdL *= 8;&lt;br /&gt;
                MtrSpdR *= 8;&lt;br /&gt;
&lt;br /&gt;
                if (    (MtrSpdL &amp;lt; -511) || (MtrSpdL &amp;gt; 512)&lt;br /&gt;
                     || (MtrSpdR &amp;lt; -511) || (MtrSpdR &amp;gt; 512) )&lt;br /&gt;
                {&lt;br /&gt;
                    Rsp[0] = &amp;#039;E&amp;#039;;       //  Error.&lt;br /&gt;
&lt;br /&gt;
                    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                    MtrMovL = MtrMovR = 0;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                if (    ((MtrSpdL &amp;gt; 0) &amp;amp;&amp;amp; (MtrMovL &amp;lt; 0))&lt;br /&gt;
                     || ((MtrSpdL &amp;lt; 0) &amp;amp;&amp;amp; (MtrMovL &amp;gt; 0))&lt;br /&gt;
                     || ((MtrSpdR &amp;gt; 0) &amp;amp;&amp;amp; (MtrMovR &amp;lt; 0))&lt;br /&gt;
                     || ((MtrSpdR &amp;lt; 0) &amp;amp;&amp;amp; (MtrMovR &amp;gt; 0)) )&lt;br /&gt;
                {&lt;br /&gt;
                    Rsp[0] = &amp;#039;E&amp;#039;;       //  Error.&lt;br /&gt;
&lt;br /&gt;
                    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                    MtrMovL = MtrMovR = 0;&lt;br /&gt;
                }&lt;br /&gt;
                else&lt;br /&gt;
                {&lt;br /&gt;
                    if ( MtrMovL &amp;amp;&amp;amp; MtrMovR )&lt;br /&gt;
                    {&lt;br /&gt;
                        svp_get_counts_and_reset_ab();&lt;br /&gt;
                        svp_get_counts_and_reset_cd();&lt;br /&gt;
&lt;br /&gt;
                        set_motors ( MtrSpdL, MtrSpdR );&lt;br /&gt;
&lt;br /&gt;
                        bMtrRng = MtrSpdL | MtrSpdR;&lt;br /&gt;
                    }&lt;br /&gt;
&lt;br /&gt;
                    Rsp[0] = &amp;#039;V&amp;#039;;&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                nRspChars = 1;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;S&amp;#039; )    //  Status.&lt;br /&gt;
            {&lt;br /&gt;
                Rsp[0] = &amp;#039;S&amp;#039;;&lt;br /&gt;
                Rsp[1] = (char)(MtrSpdL / 8);   *((short *)&amp;amp;Rsp[2]) = MtrEncL;&lt;br /&gt;
                Rsp[4] = (char)(MtrSpdR / 8);   *((short *)&amp;amp;Rsp[5]) = MtrEncR;&lt;br /&gt;
                &lt;br /&gt;
                nRspChars = 7;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            if ( Cmd[0] == &amp;#039;0&amp;#039; )    //  Zero (reset) the encoder counts.&lt;br /&gt;
            {&lt;br /&gt;
                svp_get_counts_and_reset_ab();&lt;br /&gt;
                svp_get_counts_and_reset_cd();&lt;br /&gt;
&lt;br /&gt;
                strcpy ( Rsp, &amp;quot;0&amp;quot; );&lt;br /&gt;
                &lt;br /&gt;
                nRspChars = 1;&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
                memcpy ( Rsp, Cmd, nRspChars = nCmdChars );&lt;br /&gt;
&lt;br /&gt;
            lcd_goto_xy ( 15, 0 );      printf ( &amp;quot;%c&amp;quot;, Rsp[0] );&lt;br /&gt;
&lt;br /&gt;
            serial_send ( UART0, Rsp, nRspChars );&lt;br /&gt;
&lt;br /&gt;
            bSntRsp = 1;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        MtrEncL = svp_get_counts_ab();&lt;br /&gt;
        MtrEncR = svp_get_counts_cd();&lt;br /&gt;
&lt;br /&gt;
        TmNow   = get_ms();&lt;br /&gt;
&lt;br /&gt;
        if ( bMtrRng &amp;amp;&amp;amp; (   (AvgRng[0] &amp;gt; 120)&lt;br /&gt;
                         || (AvgRng[1] &amp;gt; 120)&lt;br /&gt;
                         || (AvgRng[2] &amp;gt; 120)&lt;br /&gt;
                         || (AvgRng[3] &amp;gt; 120)&lt;br /&gt;
                         || (AvgRng[4] &amp;gt; 120)&lt;br /&gt;
                         || (AvgRng[5] &amp;gt; 120)) )&lt;br /&gt;
        {&lt;br /&gt;
            set_motors ( 0, 0 );    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                                    MtrMovL = MtrMovR = 0;&lt;br /&gt;
            bMtrRng = 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if ( bMtrRng &amp;amp;&amp;amp; (TmNow - TmPCChk &amp;gt; 2000) )&lt;br /&gt;
        {&lt;br /&gt;
            set_motors ( 0, 0 );    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                                    MtrMovL = MtrMovR = 0;&lt;br /&gt;
            bMtrRng = 0;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ( bMtrRng &amp;amp;&amp;amp; MtrMovL )&lt;br /&gt;
        {&lt;br /&gt;
            if (    ((MtrMovL &amp;lt; 0) &amp;amp;&amp;amp; (MtrEncL &amp;lt;= MtrMovL))&lt;br /&gt;
                 || ((MtrMovL &amp;gt; 0) &amp;amp;&amp;amp; (MtrEncL &amp;gt;= MtrMovL)) )&lt;br /&gt;
            {&lt;br /&gt;
                set_motors ( 0, 0 );    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                                        MtrMovL = MtrMovR = 0;&lt;br /&gt;
                bMtrRng = 0;&lt;br /&gt;
            }           &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if ( bMtrRng &amp;amp;&amp;amp; MtrMovR )&lt;br /&gt;
        {&lt;br /&gt;
            if (    ((MtrMovR &amp;lt; 0) &amp;amp;&amp;amp; (MtrEncR &amp;lt;= MtrMovR))&lt;br /&gt;
                 || ((MtrMovR &amp;gt; 0) &amp;amp;&amp;amp; (MtrEncR &amp;gt;= MtrMovR)) )&lt;br /&gt;
            {&lt;br /&gt;
                set_motors ( 0, 0 );    MtrSpdL = MtrSpdR = 0;&lt;br /&gt;
                                        MtrMovL = MtrMovR = 0;&lt;br /&gt;
                bMtrRng = 0;&lt;br /&gt;
            }           &lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        TmDelta = TmNow - TmPrv;    &lt;br /&gt;
        TmPrv   = TmNow;&lt;br /&gt;
&lt;br /&gt;
        TmSum += TmDelta;       TmCnt++;&lt;br /&gt;
&lt;br /&gt;
        //  Every 30 loops ...&lt;br /&gt;
        //&lt;br /&gt;
        if ( TmCnt == 30 )&lt;br /&gt;
        {&lt;br /&gt;
            //  Show the average loop time.&lt;br /&gt;
            //&lt;br /&gt;
            TmDelta = TmSum / TmCnt;&lt;br /&gt;
&lt;br /&gt;
            TmSum = TmCnt = 0;&lt;br /&gt;
&lt;br /&gt;
            lcd_goto_xy (  8, 0 );      print_unsigned_long ( TmDelta );&lt;br /&gt;
&lt;br /&gt;
            //  And show the encoder counts.&lt;br /&gt;
            //&lt;br /&gt;
            lcd_goto_xy (  0, 1 );      printf ( &amp;quot;%5d&amp;quot;, MtrEncL );&lt;br /&gt;
            lcd_goto_xy (  5, 1 );      printf ( &amp;quot;%5d&amp;quot;, MtrEncR );&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        //  Show battery voltage every 5 seconds.&lt;br /&gt;
        //&lt;br /&gt;
        if ( (TmBatt == 0) || (TmNow - TmBatt &amp;gt; 5000) )&lt;br /&gt;
        {&lt;br /&gt;
            Batt = read_battery_millivolts_svp();&lt;br /&gt;
&lt;br /&gt;
            lcd_goto_xy ( 10, 0 );      printf ( &amp;quot;%2d&amp;quot;, Batt / 100 );&lt;br /&gt;
&lt;br /&gt;
            TmBatt = TmNow;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>BradDunagan</name></author>
	</entry>
</feed>