<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
	xmlns:media="http://search.yahoo.com/mrss/"
>

<channel>
	<title>Robot is Happy &#187; Processing</title>
	<atom:link href="http://www.robotishappy.com/category/processing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.robotishappy.com</link>
	<description>creating our robot overlords one day at a time</description>
	<lastBuildDate>Tue, 19 Oct 2010 13:29:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<!-- podcast_generator="podPress/8.8" - maintenance_release="8.8.5.3" -->
	<copyright>Copyright &#xA9; 2012 Robot is Happy </copyright>
	<managingEditor>chris@robotishappy.com</managingEditor>
	<webMaster>chris@robotishappy.com</webMaster>
	<category>posts</category>
	<image>
		<url>http://www.robotishappy.com/wp-content/plugins/podpress/images/powered_by_podpress.jpg</url>
		<title>Robot is Happy &#187; Processing</title>
		<link>http://www.robotishappy.com</link>
		<width>144</width>
		<height>144</height>
	</image>
	<itunes:subtitle></itunes:subtitle>
	<itunes:summary>creating our robot overlords one day at a time</itunes:summary>
	<itunes:keywords></itunes:keywords>
	<itunes:category text="Society &amp; Culture" />
	<itunes:author></itunes:author>
	<itunes:owner>
		<itunes:name></itunes:name>
		<itunes:email>chris@robotishappy.com</itunes:email>
	</itunes:owner>
	<itunes:block>no</itunes:block>
	<itunes:explicit>no</itunes:explicit>
	<itunes:image href="http://www.robotishappy.com/wp-content/plugins/podpress/images/powered_by_podpress_large.jpg" />
		<item>
		<title>Part 1) Visualizing 3-Axis Accelerometer Readings in Processing</title>
		<link>http://www.robotishappy.com/2010/08/part-1-visualizing-3-axis-accelerometer-readings-in-processing/</link>
		<comments>http://www.robotishappy.com/2010/08/part-1-visualizing-3-axis-accelerometer-readings-in-processing/#comments</comments>
		<pubDate>Tue, 10 Aug 2010 02:59:23 +0000</pubDate>
		<dc:creator>Christopher Hazlett</dc:creator>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Radio Control]]></category>
		<category><![CDATA[Accelerometer]]></category>

		<guid isPermaLink="false">http://www.robotishappy.com/?p=472</guid>
		<description><![CDATA[So I started playing around with a 3-Axis Accelerometer in the hopes of dreaming up some project or other.  So I hooked it up to my Arduino and my Arduino to my computer and wrote a little Processing code to graph it all into pretty colors.]]></description>
			<content:encoded><![CDATA[<p>It's been a while since I've had the chance to do anything vaguely electronic. Sure, I've painted rooms in my house, installed ceiling fans, added insulation to my attic, but that's a far cry from programming in Wiring or Processing.  So, thankfully, after getting my new workspace all put together, I got the chance to play with some of the parts I've had waiting in a few SparkFun boxes.</p>
<p>So I started playing around with a 3-Axis Accelerometer in the hopes of dreaming up some project or other.  So I hooked it up to my Arduino and my Arduino to my computer and wrote a little Processing code to graph it all into pretty colors.  As with all of my projects, the first step for me is understanding and since I didn't have much experience with Accelerometers a little crash course was in order.  As it turns out, it's a fairly simple sensor to use (or collection of 3 sensors: x, y, z, I should say). Simply plug the VCC connector into the Arduino 3V pin (not the 5V pin. The ADXL3305 chip is only rated to 3.3V), the ground into ground and the x, y, and z pins into 0,1,2 analog pins.  The code for the Arduino is simple:</p>
<h2>The Arduino Code</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code"><pre class="c" style="font-family:monospace;"><span style="color: #339933;">#define X_AXIS 0</span>
<span style="color: #339933;">#define Y_AXIS 1</span>
<span style="color: #339933;">#define Z_AXIS 2</span>
&nbsp;
<span style="color: #993333;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  Serial.<span style="color: #202020;">begin</span><span style="color: #009900;">&#40;</span><span style="color: #0000dd;">9600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">void</span> loop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #993333;">int</span> x <span style="color: #339933;">=</span> analogRead<span style="color: #009900;">&#40;</span>X_AXIS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> y <span style="color: #339933;">=</span> analogRead<span style="color: #009900;">&#40;</span>Y_AXIS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #993333;">int</span> z <span style="color: #339933;">=</span> analogRead<span style="color: #009900;">&#40;</span>Z_AXIS<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>x<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span>y<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">print</span><span style="color: #009900;">&#40;</span><span style="color: #ff0000;">':'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  Serial.<span style="color: #202020;">println</span><span style="color: #009900;">&#40;</span>z<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>It takes the readings in and outputs them into a formatted string '[x]|[y]:[z]'. That's it.  This is just for outputting data right now, so nothing special. It gets more interesting when we look at the processing.</p>
<h2>The Processing Code in Action</h2>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/vblcfZ291vw&amp;hl=en_US&amp;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/vblcfZ291vw&amp;hl=en_US&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
<p>The code that makes the sweet, sweet video above isn't necessarily complicated, but there may be a few things you haven't used in Processing before.</p>
<ul>
<li><a href="http://processing.org/reference/map_.html">map(value, low1, high1, low2, high2)</a> - converts a value from one range into a corresponding value into another range.</li>
<li><a href="http://processing.org/reference/norm_.html">norm(value, low, high)</a> - converts a value into a value from 0.0 to 1.0 based on the supplied range.</li>
<li><a href="http://processing.org/reference/popMatrix_.html">pushMatrix()</a> / <a href="http://processing.org/reference/pushMatrix_.html">popMatrix()</a> - the pushMatrix() and popMatrix() methods allow you to apply rotation, translation, and other methods to a specific style.  By issuing the pushMatrix() then calling the translate(), and rotateX, rotateY methods, you can then call popMatrix so those methods don't affect other elements being rendered by Processing.</li>
</ul>
<h2>The Processing Code</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
</pre></td><td class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.serial.*</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.opengl.*</span><span style="color: #339933;">;</span>
Serial myPort<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> baudRate <span style="color: #339933;">=</span> <span style="color: #cc66cc;">9600</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> lf <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
&nbsp;
PFont font<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> xAxis<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> yAxis<span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> zAxis<span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> currentX <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> currentY <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> currentZ <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//these value were determined by taking readings from a resting position</span>
<span style="color: #000066; font-weight: bold;">int</span> oneGSensorValue <span style="color: #339933;">=</span> <span style="color: #cc66cc;">400</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">float</span> oneGMillivolt <span style="color: #339933;">=</span> oneGSensorValue <span style="color: #339933;">*</span> <span style="color: #cc66cc;">4.9</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> totalReadings <span style="color: #339933;">=</span> <span style="color: #cc66cc;">400</span><span style="color: #339933;">;</span>
<span style="color: #000066; font-weight: bold;">int</span> readingPos <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// the reading position in the array</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">600</span>, <span style="color: #cc66cc;">300</span>, OPENGL<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
  font <span style="color: #339933;">=</span> createFont<span style="color: #009900;">&#40;</span>PFont.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">270</span><span style="color: #009900;">&#93;</span>, <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smallFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  xAxis <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span>totalReadings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  yAxis <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span>totalReadings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
  zAxis <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span>totalReadings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> totalReadings<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    xAxis<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> oneGSensorValue<span style="color: #339933;">;</span>
    yAxis<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> oneGSensorValue<span style="color: #339933;">;</span>
    zAxis<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> oneGSensorValue<span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  myPort <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Serial<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Serial.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>, baudRate<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  myPort.<span style="color: #006633;">bufferUntil</span><span style="color: #009900;">&#40;</span>lf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  noLoop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> serialEvent<span style="color: #009900;">&#40;</span>Serial p<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">String</span> inString<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">try</span><span style="color: #009900;">&#123;</span>
    inString <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>myPort.<span style="color: #006633;">readString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    currentX <span style="color: #339933;">=</span> xValue<span style="color: #009900;">&#40;</span>inString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    currentY <span style="color: #339933;">=</span> yValue<span style="color: #009900;">&#40;</span>inString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    currentZ <span style="color: #339933;">=</span> zValue<span style="color: #009900;">&#40;</span>inString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    xAxis <span style="color: #339933;">=</span> insertValueIntoArray<span style="color: #009900;">&#40;</span>xAxis, currentX, readingPos, totalReadings<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    yAxis <span style="color: #339933;">=</span> insertValueIntoArray<span style="color: #009900;">&#40;</span>yAxis, currentY, readingPos, totalReadings<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    zAxis <span style="color: #339933;">=</span> insertValueIntoArray<span style="color: #009900;">&#40;</span>zAxis, currentZ, readingPos, totalReadings<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    readingPos <span style="color: #339933;">=</span> readingPos <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// increment the array position</span>
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   println<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  redraw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  background<span style="color: #009900;">&#40;</span>#FEFFFC<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  drawGraph<span style="color: #009900;">&#40;</span>xAxis, <span style="color: #cc66cc;">100</span>, color<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">519050</span><span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;X - Axis&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
  drawGraph<span style="color: #009900;">&#40;</span>yAxis, <span style="color: #cc66cc;">200</span>, color<span style="color: #009900;">&#40;</span>#708CDE<span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;Y - Axis&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  drawGraph<span style="color: #009900;">&#40;</span>zAxis, <span style="color: #cc66cc;">300</span>, color<span style="color: #009900;">&#40;</span>#D38031<span style="color: #009900;">&#41;</span>, <span style="color: #0000ff;">&quot;Z - Axis&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  draw3d<span style="color: #009900;">&#40;</span>currentX, currentY, currentZ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> drawGraph<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> arrToDraw, <span style="color: #000066; font-weight: bold;">int</span> yPos, color graphColor, <span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> arrLength <span style="color: #339933;">=</span> arrToDraw.<span style="color: #006633;">length</span><span style="color: #339933;">;</span>
  stroke<span style="color: #009900;">&#40;</span>graphColor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x<span style="color: #339933;">&lt;</span>arrLength <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">float</span> normalizedLine <span style="color: #339933;">=</span> norm<span style="color: #009900;">&#40;</span>arrToDraw<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span>, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">700.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000066; font-weight: bold;">float</span> lineHeight <span style="color: #339933;">=</span> map<span style="color: #009900;">&#40;</span>normalizedLine, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">1.0</span>, <span style="color: #cc66cc;">0.00</span>, <span style="color: #cc66cc;">85.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    line<span style="color: #009900;">&#40;</span>x, yPos, x, yPos <span style="color: #339933;">-</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>lineHeight<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #009900;">&#125;</span>
  pushStyle<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smallFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  stroke<span style="color: #009900;">&#40;</span>#FFFFFF<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#FFFFFF<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #003399;">String</span> gString <span style="color: #339933;">=</span> nfc<span style="color: #009900;">&#40;</span>gFromSensorValue<span style="color: #009900;">&#40;</span>arrToDraw<span style="color: #009900;">&#91;</span>arrLength <span style="color: #339933;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span>, <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span>name <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; : &quot;</span> <span style="color: #339933;">+</span> gString <span style="color: #339933;">+</span> <span style="color: #0000ff;">&quot; Gs&quot;</span>, <span style="color: #cc66cc;">10</span>, yPos <span style="color: #339933;">-</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  popStyle<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw3d<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> currentX, <span style="color: #000066; font-weight: bold;">int</span> currentY, <span style="color: #000066; font-weight: bold;">int</span> currentZ<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">float</span> normalizedX <span style="color: #339933;">=</span> norm<span style="color: #009900;">&#40;</span>currentX, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">700.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> normalizedY <span style="color: #339933;">=</span> norm<span style="color: #009900;">&#40;</span>currentY, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">700.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> normalizedZ <span style="color: #339933;">=</span> norm<span style="color: #009900;">&#40;</span>currentZ, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">700.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> finalZ <span style="color: #339933;">=</span> map<span style="color: #009900;">&#40;</span>normalizedZ, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">1.0</span>, <span style="color: #cc66cc;">300.00</span>, <span style="color: #cc66cc;">0.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> finalY <span style="color: #339933;">=</span> map<span style="color: #009900;">&#40;</span>normalizedY, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">1.0</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">3.5</span>, <span style="color: #cc66cc;">3.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> finalX <span style="color: #339933;">=</span> map<span style="color: #009900;">&#40;</span>normalizedX, <span style="color: #cc66cc;">0.0</span>, <span style="color: #cc66cc;">1.0</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">3.5</span>, <span style="color: #cc66cc;">3.5</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  pushMatrix<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  ambientLight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">102</span>, <span style="color: #cc66cc;">102</span>, <span style="color: #cc66cc;">102</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  lightSpecular<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">204</span>, <span style="color: #cc66cc;">204</span>, <span style="color: #cc66cc;">204</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  directionalLight<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">102</span>, <span style="color: #cc66cc;">102</span>, <span style="color: #cc66cc;">102</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span>, <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  shininess<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  translate<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, finalZ<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rotateY<span style="color: #009900;">&#40;</span>finalY <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1.0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rotateZ<span style="color: #009900;">&#40;</span>finalX<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#E2E8D5<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#B76F6F<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">float</span> heightWidth <span style="color: #339933;">=</span> finalX <span style="color: #339933;">*</span> <span style="color: #cc66cc;">1.8</span><span style="color: #339933;">;</span>
  box<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">65</span>, <span style="color: #cc66cc;">65</span>, <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  popMatrix<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> xValue<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> inString<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> pipeIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,pipeIndex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> yValue<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> inString<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> pipeIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> colonIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span>pipeIndex<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span>, colonIndex<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">int</span> zValue<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> inString<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">int</span> colonIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">':'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span>colonIndex <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span>, inString.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
This little method creates a running tally of all the incoming sensor readings
and then, when it reaches the end of the array, it pops the first one of the beginning
and inserts a new value in at the end...thus keeping a running tally of the last 400
readings (it can be for any length array, that's just what it's set to for this project).
This works a lot like an RRD graph where my inspiration came from.
*/</span>
<span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> insertValueIntoArray<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> targetArray, <span style="color: #000066; font-weight: bold;">int</span> val, <span style="color: #000066; font-weight: bold;">int</span> pos, <span style="color: #000066; font-weight: bold;">int</span> maxLength<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>pos <span style="color: #339933;">&gt;</span> <span style="color: #009900;">&#40;</span>maxLength<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     <span style="color: #666666; font-style: italic;">// if the pos == maxSize, shift the array to retain the original value</span>
     <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> returnArray <span style="color: #339933;">=</span> subset<span style="color: #009900;">&#40;</span>targetArray, <span style="color: #cc66cc;">1</span>, maxLength<span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     returnArray <span style="color: #339933;">=</span> expand<span style="color: #009900;">&#40;</span>returnArray, maxLength<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
     returnArray<span style="color: #009900;">&#91;</span>maxLength<span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> val<span style="color: #339933;">;</span>
     <span style="color: #000000; font-weight: bold;">return</span> returnArray<span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
     targetArray<span style="color: #009900;">&#91;</span>pos<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> val<span style="color: #339933;">;</span>
     <span style="color: #000000; font-weight: bold;">return</span> targetArray<span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">/*
This conversion will vary from project to project
and if you're project is relying on battery power
the reading may need to be adjusted to give you true 
one G as your battery power decreases.  All of this is due to
the output of the X,Y, and Z sensors and their coorelation to the incoming voltage at VCC
Check out the specs for the ADXL335 (part of the break out board from Sparkfun.com) here: http://www.analog.com/en/sensors/inertial-sensors/adxl335/products/product.html
*/</span>
<span style="color: #000066; font-weight: bold;">float</span> gFromSensorValue<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> sensorValue<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">//convert analog value into millivolts</span>
  <span style="color: #000066; font-weight: bold;">float</span> mvValue <span style="color: #339933;">=</span> sensorValue <span style="color: #339933;">*</span> <span style="color: #cc66cc;">4.9</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">return</span> mvValue<span style="color: #339933;">/</span>oneGMillivolt<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> smallFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">void</span> mediumFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">void</span> largeFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>This is just the first step of a larger project to create a DIY radio control using an xBee and this 3-axis accelerometer.</p>
<p>Happy Coding.<br />
- Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotishappy.com/2010/08/part-1-visualizing-3-axis-accelerometer-readings-in-processing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Beacon locating robot &#8211; Visualizing sensor readings with Processing</title>
		<link>http://www.robotishappy.com/2010/01/beacon-locating-robot-visualizing-sensor-readings-with-processing/</link>
		<comments>http://www.robotishappy.com/2010/01/beacon-locating-robot-visualizing-sensor-readings-with-processing/#comments</comments>
		<pubDate>Fri, 01 Jan 2010 17:07:08 +0000</pubDate>
		<dc:creator>Christopher Hazlett</dc:creator>
				<category><![CDATA[Beacon Locating Robot]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Arduino]]></category>

		<guid isPermaLink="false">http://www.robotishappy.com/?p=451</guid>
		<description><![CDATA[I've been boning up on my <a href="http://www.processing.org">Processing</a> skills, and have been fascinated by the library for it's "easy" integration with my Arduino projects.  My beacon locating robot with the Arduino brain seemed like an excellent opportunity to wire up my robot to a Processing sketch and see what happens.]]></description>
			<content:encoded><![CDATA[<p>I've been boning up on my <a href="http://www.processing.org">Processing</a> skills, and have been fascinated by the library for it's "easy" integration with my Arduino projects.  My <a href="http://www.robotishappy.com/2009/12/beacon-locating-robot-powered-by-arduino-and-ir-transceiver/">beacon locating robot</a> with the Arduino brain seemed like an excellent opportunity to wire up my robot to a Processing sketch and see what happens.  There's not a lot to the application, but it proved very helpful in understanding the robot and how it was functioning.</p>
<p>There weren't too many gotchas with this application, but I'll point a couple of interesting tidbits:  </p>
<p><strong>1)</strong> I have the baud rate set at 38400, which is rather high, but I'm doing a number of different actions at the same time on the robot itself.  A lower baud rate makes the robot stutter when it's sweeping the servo back and forth.  </p>
<p><strong>2)</strong> You do need to use the noLoop() method in the setup of the application.  If you don't, the serial event and draw action will compete...or so it seems.  I forgot to use the method once and the application locked up my computer.  Just a warning.  </p>
<p><strong>3)</strong> If you're visualizing sensor data, the only way to get the nice rendered arc like you see in the video below, is to load an array every time you read in data. Then loop through that array and render all the previous readings as well as the most recently updated one.  You also may have noticed that I'm not storing the servo angle in the angles[] array, just the readings.  I can do this because the count of elements in the array matches the count of servo positions the robot iterates through as it sweeps.  Given that, it's very easy to extrapolate what angle the readings are at by multiplying the position of the element in the array by the servo increment.</p>
<p><strong>4)</strong> You'll also notice in the video below that when the sensor detects something, the drawn arc gets red and much longer.  I could have normalized and reversed the readings so when it detected something, the bar got shorter so it more accurately represented an object.  I tried that, and seen that done before, but I really liked how object detections jumped out instead of disappeared. </p>
<p>Obviously, a little more thought went into it, but that's about the only esoteric ideas/decisions you need to know if you want to do something similar.</p>
<h2>The Code in Action</h2>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/nAAwd-jbZ1Q&#038;hl=en&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><embed src="http://www.youtube.com/v/nAAwd-jbZ1Q&#038;hl=en&#038;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"></embed></object></p>
<h2>The Code</h2>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
</pre></td><td class="code"><pre class="java" style="font-family:monospace;">  <span style="color: #666666; font-style: italic;">// Serial Variables</span>
 <span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">processing.serial.*</span><span style="color: #339933;">;</span>
 Serial myPort<span style="color: #339933;">;</span>    <span style="color: #666666; font-style: italic;">// The serial port: </span>
 <span style="color: #000066; font-weight: bold;">int</span> baudRate <span style="color: #339933;">=</span> <span style="color: #cc66cc;">38400</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//make sure this matches the baud rate in the arduino program.</span>
 <span style="color: #000066; font-weight: bold;">int</span> lf <span style="color: #339933;">=</span> <span style="color: #cc66cc;">10</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Font Settings</span>
 PFont font<span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">float</span> radianMultiplier<span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> angles<span style="color: #339933;">;</span> 
&nbsp;
 <span style="color: #666666; font-style: italic;">// Sensor Variables</span>
 <span style="color: #003399;">String</span> direction <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;N&quot;</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> sensorReading<span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> angle<span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> degreeIncrement <span style="color: #339933;">=</span> <span style="color: #cc66cc;">6</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> startAngle <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> endAngle <span style="color: #339933;">=</span> <span style="color: #cc66cc;">180</span><span style="color: #339933;">;</span>
 <span style="color: #000066; font-weight: bold;">int</span> totalReadings <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
&nbsp;
 <span style="color: #000066; font-weight: bold;">void</span> setup<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
   smooth<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   size<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">600</span>, <span style="color: #cc66cc;">400</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   <span style="color: #666666; font-style: italic;">//270 is Helvetica-Neue (my current favorite) to get a list use println(PFont.list());</span>
   font <span style="color: #339933;">=</span> createFont<span style="color: #009900;">&#40;</span>PFont.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">270</span><span style="color: #009900;">&#93;</span>, <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
   textFont<span style="color: #009900;">&#40;</span>font<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
   radianMultiplier <span style="color: #339933;">=</span> PI <span style="color: #339933;">/</span> <span style="color: #cc66cc;">180</span><span style="color: #339933;">;</span>
&nbsp;
   totalReadings <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>endAngle <span style="color: #339933;">-</span> startAngle<span style="color: #009900;">&#41;</span><span style="color: #339933;">/</span>degreeIncrement<span style="color: #339933;">;</span>
   angles <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#91;</span>totalReadings<span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
   <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> totalReadings<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
     angles<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span>
   <span style="color: #009900;">&#125;</span>
&nbsp;
   myPort <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Serial<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">this</span>, Serial.<span style="color: #006633;">list</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#91;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#93;</span>, baudRate<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
   myPort.<span style="color: #006633;">bufferUntil</span><span style="color: #009900;">&#40;</span>lf<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
   noLoop<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
 <span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> draw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
  background<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">266014</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderClear<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderScan<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderDirection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> serialEvent<span style="color: #009900;">&#40;</span>Serial p<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
  <span style="color: #003399;">String</span> inString<span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> pipeIndex <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span>
  <span style="color: #000066; font-weight: bold;">int</span> semicolonIndex <span style="color: #339933;">=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #339933;">;</span> 
&nbsp;
  <span style="color: #003399;">String</span> angleString<span style="color: #339933;">;</span>
  <span style="color: #003399;">String</span> sensorString<span style="color: #339933;">;</span>
  <span style="color: #003399;">String</span> dirString<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #003399;">String</span> newString<span style="color: #339933;">;</span>
  <span style="color: #003399;">String</span> stepString<span style="color: #339933;">;</span>
&nbsp;
  <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// the string is shaped like so: [angle]|[sensorReading];[direction] -- 6|450;N</span>
    inString <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>myPort.<span style="color: #006633;">readString</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    pipeIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>               <span style="color: #666666; font-style: italic;">//find the pipe</span>
    semicolonIndex <span style="color: #339933;">=</span> inString.<span style="color: #006633;">indexOf</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">';'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>               <span style="color: #666666; font-style: italic;">//find the semicolon</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>pipeIndex <span style="color: #339933;">!=</span> <span style="color: #339933;">-</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>                           <span style="color: #666666; font-style: italic;">//if we found the pipe</span>
      angleString <span style="color: #339933;">=</span> inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>, pipeIndex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  <span style="color: #666666; font-style: italic;">//parse angle reading</span>
      sensorString <span style="color: #339933;">=</span> inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span>pipeIndex<span style="color: #339933;">+</span><span style="color: #cc66cc;">1</span>, semicolonIndex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
      dirString <span style="color: #339933;">=</span> inString.<span style="color: #006633;">substring</span><span style="color: #009900;">&#40;</span>semicolonIndex <span style="color: #339933;">+</span> <span style="color: #cc66cc;">1</span>, inString.<span style="color: #006633;">length</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">//length()-2 &lt;- strips off the linefeed</span>
      angle <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>angleString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      sensorReading <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">int</span><span style="color: #009900;">&#40;</span>sensorString<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      direction <span style="color: #339933;">=</span> dirString<span style="color: #339933;">;</span>
      angles<span style="color: #009900;">&#91;</span><span style="color: #009900;">&#40;</span>angle<span style="color: #339933;">/</span>degreeIncrement<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> sensorReading<span style="color: #339933;">;</span>     
    <span style="color: #009900;">&#125;</span>
  <span style="color: #009900;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">catch</span><span style="color: #009900;">&#40;</span><span style="color: #003399;">Exception</span> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    println<span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>
  redraw<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
&nbsp;
<span style="color: #666666; font-style: italic;">// Render Functions</span>
<span style="color: #000066; font-weight: bold;">void</span> renderReadings<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> angle, <span style="color: #000066; font-weight: bold;">int</span> sensor<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  mediumFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Angle: &quot;</span> <span style="color: #339933;">+</span> angle, <span style="color: #cc66cc;">139</span>, <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Sensor: &quot;</span> <span style="color: #339933;">+</span> sensor, <span style="color: #cc66cc;">123</span>, <span style="color: #cc66cc;">90</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderScan<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">424242</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">600</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
  stroke<span style="color: #009900;">&#40;</span>#000000<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> x<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> x<span style="color: #339933;">&lt;</span>totalReadings<span style="color: #339933;">;</span> x<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">boolean</span> objectDetected <span style="color: #339933;">=</span> angles<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span> <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">450</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>objectDetected <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
      fill<span style="color: #009900;">&#40;</span>#980f0f, <span style="color: #cc66cc;">400</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
      fill<span style="color: #009900;">&#40;</span>#ffffff, <span style="color: #cc66cc;">100</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">int</span> angle <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>x <span style="color: #339933;">*</span> degreeIncrement<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #cc66cc;">180</span><span style="color: #339933;">;</span>
    noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">200</span>, <span style="color: #cc66cc;">325</span>, angles<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span>, angles<span style="color: #009900;">&#91;</span>x<span style="color: #009900;">&#93;</span>, radians<span style="color: #009900;">&#40;</span>angle<span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span>angle <span style="color: #339933;">+</span> <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>objectDetected <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>renderAlert<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span>
    <span style="color: #666666; font-style: italic;">//renderReadings(x, angles[x]);</span>
  <span style="color: #009900;">&#125;</span>
&nbsp;
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">175</span>,<span style="color: #cc66cc;">325</span>,<span style="color: #cc66cc;">50</span>,<span style="color: #cc66cc;">65</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderDirection<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  fill<span style="color: #009900;">&#40;</span>#e38a20<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  smallFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  noStroke<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderNorth<span style="color: #009900;">&#40;</span>direction.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;N&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderSouth<span style="color: #009900;">&#40;</span>direction.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;S&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderWest<span style="color: #009900;">&#40;</span>direction.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;W&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  renderEast<span style="color: #009900;">&#40;</span>direction.<span style="color: #006633;">equals</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;E&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderNorth<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> isCurrent<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isCurrent <span style="color: #339933;">==</span> <span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#2b2b2b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">175</span>, <span style="color: #cc66cc;">175</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">225</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">315</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> 
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">696969</span>, <span style="color: #cc66cc;">475</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">150</span>, <span style="color: #cc66cc;">150</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">225</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">315</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span> 
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;N&quot;</span>, <span style="color: #cc66cc;">492</span>, <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderSouth<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> isCurrent<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isCurrent<span style="color: #339933;">==</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#2b2b2b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">175</span>, <span style="color: #cc66cc;">175</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">45</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">135</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">696969</span>, <span style="color: #cc66cc;">475</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">150</span>, <span style="color: #cc66cc;">150</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">45</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">135</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;S&quot;</span>, <span style="color: #cc66cc;">492</span>, <span style="color: #cc66cc;">165</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderWest<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> isCurrent<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isCurrent<span style="color: #339933;">==</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#2b2b2b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">175</span>, <span style="color: #cc66cc;">175</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">135</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">225</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">464646</span>, <span style="color: #cc66cc;">475</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">150</span>, <span style="color: #cc66cc;">150</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">135</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">225</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;W&quot;</span>, <span style="color: #cc66cc;">435</span>, <span style="color: #cc66cc;">110</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderEast<span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">boolean</span> isCurrent<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  <span style="color: #666666; font-style: italic;">// the 405 angle here is weird, you'd think that because you're starting at 315</span>
  <span style="color: #666666; font-style: italic;">// it would be 45 (the beginning of the South arc), but</span>
  <span style="color: #666666; font-style: italic;">// you have to continue around the circle adding angles</span>
  <span style="color: #666666; font-style: italic;">// in when you pass the 360/0 degrees mark</span>
  <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>isCurrent<span style="color: #339933;">==</span><span style="color: #000066; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#2b2b2b<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">175</span>, <span style="color: #cc66cc;">175</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">315</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">405</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span><span style="color: #000000; font-weight: bold;">else</span><span style="color: #009900;">&#123;</span>
    fill<span style="color: #009900;">&#40;</span>#<span style="color: #cc66cc;">464646</span>, <span style="color: #cc66cc;">475</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    arc<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">500</span>, <span style="color: #cc66cc;">100</span>, <span style="color: #cc66cc;">150</span>, <span style="color: #cc66cc;">150</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">315</span><span style="color: #009900;">&#41;</span>, radians<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">405</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #009900;">&#125;</span>  
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;E&quot;</span>, <span style="color: #cc66cc;">553</span>, <span style="color: #cc66cc;">110</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderAlert<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  largeFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#980f0f<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  rect<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">400</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span>,<span style="color: #cc66cc;">200</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;ALERT&quot;</span>, <span style="color: #cc66cc;">440</span>, <span style="color: #cc66cc;">305</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> renderClear<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>
  mediumFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  fill<span style="color: #009900;">&#40;</span>#ffffff<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  text<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;CLEAR&quot;</span>, <span style="color: #cc66cc;">450</span>, <span style="color: #cc66cc;">305</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000066; font-weight: bold;">void</span> smallFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">24</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">void</span> mediumFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span> textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">30</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span>
<span style="color: #000066; font-weight: bold;">void</span> largeFont<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>  textFont<span style="color: #009900;">&#40;</span>font, <span style="color: #cc66cc;">40</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>Let me know if you have any questions, thoughts, or improvements.</p>
<p>- Chris</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotishappy.com/2010/01/beacon-locating-robot-visualizing-sensor-readings-with-processing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soh-cah-toa Processing Tutorial</title>
		<link>http://www.robotishappy.com/2009/12/soh-cah-toa-processing-tutorial/</link>
		<comments>http://www.robotishappy.com/2009/12/soh-cah-toa-processing-tutorial/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 01:42:05 +0000</pubDate>
		<dc:creator>Christopher Hazlett</dc:creator>
				<category><![CDATA[Processing]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotishappy.com/?p=392</guid>
		<description><![CDATA[As I beef up for my next project, a self-guided GPS mapping robot (I still have to write about my beacon seeking robot), I was reviewing the processing language to parse the GPS logged data.]]></description>
			<content:encoded><![CDATA[<p>As I beef up for my next project, a self-guided GPS mapping robot (I still have to write about my beacon seeking robot), I was reviewing the processing language to parse the GPS logged data.</p>
<p>Found this tutorial exceptionally helpful: <a href="http://processing.org/learning/trig/">http://processing.org/learning/trig/</a>.</p>
<p>- Chris </p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotishappy.com/2009/12/soh-cah-toa-processing-tutorial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

