<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-355411830490069516</id><updated>2011-12-27T10:46:43.832-08:00</updated><title type='text'>Werner Daehn projects</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-3470992769555653833</id><published>2011-11-02T00:11:00.000-07:00</published><updated>2011-11-02T00:11:47.168-07:00</updated><title type='text'>Is there really the need for dark energy? Was there a big bang even?</title><content type='html'>Okay, I think I understood the point. Space is expanding in an accelerated fashion. Not in the sense of the big bang created a speed vector for e.g. a galaxy and now it keeps going, because that would not explain the acceleration. (And not the location inheritance of the red shift) If any force is applied to a galaxy it is gravitation and that force would slow it down. It is the space fabric between the observed objects which keeps getting more and more and hence the galaxy distance&amp;nbsp;measured&amp;nbsp;does increase; and the increase picks up even.&lt;br /&gt;&lt;br /&gt;The reason we know it is accelerating is the red shift of light and the light&amp;nbsp;intensity&amp;nbsp;of standard candles. Okay, I can accept that.&lt;br /&gt;&lt;br /&gt;Let us assume for a moment that not space is the variant but the time is the variable thing. We already know that time can be bend by gravity, so the concept is not new.&lt;br /&gt;&lt;br /&gt;What would happen if we look at a distant galaxy, one that is 5 billion light years away? We would see the galaxy in slow motion, as the time in the past was slower. The hydrogen spectral line, which has a given frequency, would have a lower frequency, a red shift.&lt;br /&gt;&lt;br /&gt;All the arguments holding true for the-space-itself-does-get-more holds true for the time-was-slower in the past &amp;nbsp;as well, you can't even tell the difference as space and time are connected. A lightyear would still be a lightyear.&lt;br /&gt;Same is true for the standard candle. The&amp;nbsp;intensity&amp;nbsp;of such a supernova burst indicates how much the light was spread, again it lets us calculate the distance in light years. And a light year is a light year.&lt;br /&gt;&lt;br /&gt;So I wonder what evidence or logical holes prevent above statement to be wrong. One method I can think of would be to measure the rotation of galaxies. This movement has no distance part, it is a pure frequency, a time variant. A distant galaxy would appear to rotate at a lower speed then it actually did and the mass of the galaxy would be off. Unfortunately in the wrong direction to explain at least some effects of the dark matter. So if anything, this time variant&amp;nbsp;principle&amp;nbsp;would require more dark matter.&lt;br /&gt;&lt;br /&gt;If we would move on and define the time variant to be locally disturbed as well, not&amp;nbsp;uniformly, you could explain gravitational lenses as a pure effect of time as well. Just like a magnifying glass works because the speed of light is lower in glass than air, the light rays are bend.&lt;br /&gt;&lt;br /&gt;Where am I heading into the wrong direction? I am sure greater minds than I have answered the question already, I just can't seem to find the material.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-3470992769555653833?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/3470992769555653833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=3470992769555653833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3470992769555653833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3470992769555653833'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/11/is-there-really-need-for-dark-energy.html' title='Is there really the need for dark energy? Was there a big bang even?'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4992779053811268262</id><published>2011-10-12T14:11:00.000-07:00</published><updated>2011-11-18T00:52:36.561-08:00</updated><title type='text'>Windsurfen bei Rene Egli in Fuerteventura 2011</title><content type='html'>&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Endlich ist es so weit, Anzug und Krawatte werden in denSchrank gehängt, die Surfsachen ausgepackt und zuerst einmal kräftig entstaubtbevor sie in den Koffer wandern, es geht zum wiederholten Male nach Fuerteventura.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="52" src="http://3.bp.blogspot.com/-u5E69-y4jAA/Tk50cNzZdtI/AAAAAAAAARk/3Z3avwFpiSE/s400/Panorama1.jpg" width="400" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Vorausgegangen ist das jährliche Buchungsritual: Zeige miralle Sommerreviere für Fortgeschrittene: Ergebnis ist eine tolle Auswahl mit - unteranderem - Karibik, Griechenland, Ägypten, Kanarischen Inseln. Wo hat es beihoher Wahrscheinlichkeit mehr als 6 Bft, denn ich habe keine Lust bei&amp;nbsp;4 Bft herum zu dümpeln? Liste reduziert sichauf Karpathos, Kanarischen Inseln. Sandstrand, kindergerecht und besseres Hotelin unmittelbarer Nähe? Okay, wir buchen wie jedes Jahr über&amp;nbsp;&lt;a href="http://www.sunandfun.de/"&gt;http://www.sunandfun.de/&lt;/a&gt;&amp;nbsp;bei Rene Egli, trotz allder Nachteile dort.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Allgemeines&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Es ist schon amüsant welche unterschiedlichen Bewertungender Spot in diversen Foren oder Bewertungsportalen bekommt. Die einen sagen, essei kaum Wind für ein angeblich so windsicheres Revier oder man beschwert sichüber die Schulung, das Hotel, das Preisniveau. Nach 15 Jahren mehr oder minderregelmäßigem Besuch kristallisiert sich zwischen diesen Aussagen aber einMuster für mich.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Der mit Abstand wichtigste Grund dort hinzufahren ist die&lt;a href="http://www.sportreisen.de/Reise-Details.html?id=629&amp;amp;title=Fuerte+Sotavento+-+Meli%C3%A3+Gorriones&amp;amp;info=weather&amp;amp;sportstation=146"&gt;Windausbeute&lt;/a&gt;. Der Passat weht über die Insel und wird, wie auf der Homepage desSurfcenters beschrieben, durch zwei Berge gepresst und verstärkt sich damitnoch weiter. Das sieht man auch sehr schön wenn man mit dem Auto in der Gegendherumfährt, es kann in 5km Entfernung ein laues Lüftchen wehen, in der PlayaBarca hat man 5-6 Bft. Aber der Passat wandert mit der Jahreszeit, imJuni und Juli hat man praktisch jeden Tag 6 Bft oder mehr, vielleicht erst ab13:00Uhr aber immerhin, im August sind es "nur" noch 90% der Tage.Und jeder der sich über zu wenig Wind beschwert war sicher im Winter dort, wennder Passatwind schon zu den Kap Verden gewandert ist.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Das ist ein Bild von einem eher heftigen Tag im Sommer, wenn man es anklickt um es zu vergrößern, sieht man wie der Sand fliegt. Bild ist unbearbeitet!&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-neGigZBWs0M/Tk4sWD4PARI/AAAAAAAAAPY/FBTQR6mw9O4/s1600/20080629_160636.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://1.bp.blogspot.com/-neGigZBWs0M/Tk4sWD4PARI/AAAAAAAAAPY/FBTQR6mw9O4/s320/20080629_160636.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Ein anderes Muss vor der Buchung ist die &lt;a href="http://www.rene-egli.com/de/wind-wetter/tidentabelle/"&gt;Tidentabelle&lt;/a&gt;einzusehen. Für Schulung sollte man nur zu einer Zeit fahren in der die Fluthoch steht und das auch Tagsüber. Denn dann hat man ein riesiges, überflutetesGebiet zum Surfen lernen/verbessern und vor allem für alle Kiter. Auch für die Kinder ist es großartig in diesem km² großen Bassin zuspielen, welches selbst bei Springflut nur maximal Hüfttief ist. Für alleanderen ist es ein Erlebnis, das man einmal gesehen haben sollte, ist aber nichtvon unmittelbarer praktischer Bedeutung. In diesem Zeitraffer&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=qyqx7SO5K-Y"&gt;Video&lt;/a&gt;&amp;nbsp;sieht man wie die Flut von ganz hinten langsam kommt (Sekunde 15) und plötzlich alles überflutet ist.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Mietmaterial&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Die Mietpreise für das Material sind extrem hoch, z.B.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;kosten&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;14Tage&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;bei Rene Egli&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;482.- EUR (Sport-Palette), in anderen Regionen wie Dahab, Gran Canaria,Karpathos, Rhodos liegen die Preise alle ziemlich genau um 330.- EUR beigleichem oder besseren Material. Nur das ist nicht das Problem, dieSportpalette umfasst nur sehr wenige kleine Bretter und die sind auch schnellvergeben. Aber bei 8 Bft kann man mit einem 100l Brett in so einem Revier nichtmehr vernünftig fahren, also wird man die Worldcup Palette buchen müssen, kostet dann schon 563.- EUR. Und der Vollständigkeit halber, die Premium Palette kostet 704.-EURund beinhaltet noch Slalomboards und Speedsegel, die dort aber nur bedingt Sinnmachen.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Die Qualität des Materials ist über jeden Zweifel erhaben,nur die neusten Boards und Segel und meist auch in ausreichender Mengevorhanden, zumindest im Center I. Das Material leidet zwar unter der Sonne und der starkenBeanspruchung und deswegen geht auch immer wieder einmal was kaputt, aber ohneVersicherung &lt;u&gt;bei Rene Egli&lt;/u&gt; selbst, sollte man so oder so nichts mieten. Auchwenn der Reiseveranstalter bereits eine Materialversicherung inkludiert hat, esgeht mit Sicherheit etwas kaputt und bevor ich im Urlaub lange Formulareausfülle und Zeit und Nerven verschwende... also noch höhere Kosten.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Ankunft&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Der 90 minütige Transfer vom Flughafen zum Melia Gorriones Hotel hat sichim Laufe der Jahre immer weiter verbessert, die letzten Jahre fährt man mitmodernen, klimatisierten Reisebussen die hoffentlich nicht zu viele Stopps vordem eigentlichen Hotel machen. Das war früher anders aber nicht gerade besser. Einesder Rätsel der Menschheit ist, warum keiner Probleme bei der Ankunft hat, beider Rückreise aber viele im Bus über Übelkeit klagen. Das Geschaukel inKombination mit der Umstellung auf das hiesige Essen? Zu viel Salzwasser die 2Wochen Windsurfen geschluckt weil die Halse noch immer nicht klappt? Egal, als Eltern kennt man das und ist darauf eingerichtet.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-IxBoUgaj4YQ/TpX8IugtD_I/AAAAAAAAAWk/hlGrLdNdacY/s1600/20110712_122103.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://4.bp.blogspot.com/-IxBoUgaj4YQ/TpX8IugtD_I/AAAAAAAAAWk/hlGrLdNdacY/s320/20110712_122103.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Dort angekommen ist der erste Schritt noch schnell in dasSurfbüro zu gehen um die notwendigen Formalitäten zu erledigen, etwa dieVertragsbedingungen unterschreiben, und zu sagen ob man das Fix-Board im Center Ioder Center II haben möchte. Wenn man das noch am Tag davor schafft, hat mangleich von Anfang an weniger Probleme und muss nicht am ersten Tag mit einemanderen, noch freiem, Board fahren und kann auch gleich zum Center gehen. Ichwähle gerne ein Board um die 80l, denn größere gibt es meist noch aber diekleinen Boards sind schnell weg. Auch wer bisher nur 100l große Boards gefahren ist, dem empfehle ich - Augen zu und durch - ein kleines Board nehmen, das ist viel einfach in der Handhabung.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Rene Egli Center II&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Die Frage nach dem Center ist auch wieder so eine grundlegendeEntscheidung. Eigentlich würde mir das Center II besser gefallen. Es hat einegleichmäßige Welle die sehr schön bricht, man kann oftmals direkt am Strandentlang fahren und das bei nur 1cm hohen Wellen. Also zum Speedfahren und für Welleeigentlich viel besser geeignet als das Center I. Nur wo sind die Speedsegel? Richtig geraten,alle ausnahmslos im Center I. Das liegt daran dass im Center II kein Platz fürzusätzliche Segel ist und man dem Schulungsmaterial natürlich den Vortritt gibt. DieSegelhalle vergrößern würde man ja gerne, wenn man denn nur aus Naturschutzgründen dürfte.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Auch die anderen Nachteile können einem dieses Centervermiesen, die Shuttles fahren nicht so oft und man ist von den festen Abfahrtszeitenabhängig; es gibt dort zwar Liegen aber keinen Schatten. Keine Duschen und imBus sollte man natürlich nicht mit nasser Kleidung sitzen. Die Segel deraktuell angemessenen Größe sind schnell mal vergeben. Und der Wind schwankt ab der Surf Station stark, fällt gerne für eine Minute auf 2Bftherunter. Im unteren Bild sieht man das rote Rechteck, das markiert den Bereich ohne Wind (zum vergrößern anklicken).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-w5LYaqUxQGw/TpXpbkfVA9I/AAAAAAAAAVk/pdmF7J4nyyM/s1600/center+2+gps.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="clear: left; float: left; font-family: Arial, Helvetica, sans-serif; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="225" src="http://4.bp.blogspot.com/-w5LYaqUxQGw/TpXpbkfVA9I/AAAAAAAAAVk/pdmF7J4nyyM/s400/center+2+gps.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Daher lautet meine persönliche Empfehlung, sich das CenterII frühzeitig einmal anzusehen, den 4km Spaziergang vom Center zum Hotelmindestens einmal zu machen und sich einfach selbst ein Bild machen. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nkqzD2xiw7s/Tk4WjAzWI4I/AAAAAAAAAN0/0pZa1v1whbo/s1600/20110706_092332.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/-nkqzD2xiw7s/Tk4WjAzWI4I/AAAAAAAAAN0/0pZa1v1whbo/s400/20110706_092332.jpg" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Rene Egli Center I&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Bleibt das Center I, das Center vor dem der Kite- undWindsurfworldcup ausgetragen wird, die Sotavento Düse den Wind nochmals stärkerbeschleunigt, hunderte von Boards liegen und man in 5 Minuten zu Fuß im MeliaGorriones Hotel ist. Auch hierüber wurden schon die unterschiedlichstenAussagen gemacht, oftmals komplett Widersprüchliche. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Ein Teil der Erklärung ergibt sich aus der Windrichtung.Normalerweise hat man reinen Nordwind, der aber an einigen wenigen Tagen imMonat sogar aus NW Richtung kommen kann. In diesem Bild habe ich die GPS Daten von einem typischen Tag eingeblendet - zum vergrößern bitte anklicken.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rY5jLI75sOQ/TpXqtNeph2I/AAAAAAAAAVs/E-oKuaHf8Es/s1600/center+1+gps.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="221" src="http://4.bp.blogspot.com/-rY5jLI75sOQ/TpXqtNeph2I/AAAAAAAAAVs/E-oKuaHf8Es/s400/center+1+gps.png" width="400" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Der Nordwind ist im Sommer sehr stark, kann bis zu 9Bfterreichen weil er durch die Düse in der Costa Calma verstärkt wird.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Als dortfrüher noch nicht viele Hotels gestanden sind, waren das wunderbareBedingungen, heute ist es so dass man die ersten 50m vom Ufer weg kaum genugWind zum Fahren hat. Weiter nach Norden in Richtung Costa Calma kreuzen machtauch keinen Sinn, dort wird es durch eine hohe Klippe und mehrere große Hotelsnur schlimmer. In den Süden darf man nicht ausweichen, auch wenn dort bessereBedingungen herrschen würden, denn dort ist die Kite Zone, welche ausSicherheitsgründen gar nicht befahren werden darf.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Weiter draußen auf dem Meer hat sich der der Wind sehr gut beruhigt, man darf aber nicht zu weit hinaus fahren, denn sonst sieht einen der Ausguck nicht mehr. Es heißt, nur im hellen Bereich darf gesurft werden. Heuer hat man zwei Bojen weiter draußen angebracht um die Grenze zu markieren. Wird diese deutlich überschritten, rast der Jetski heran und schreit einem in Spanisch etwas zu was wahrscheinlich so viel wie "das war zu weit" bedeuten sollte. Wiederholt sich das, ist man das Material für den Tag los.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Das Ergebnis ist also dass sich 50 Surfer ein 1km langes und paar hundert Meter breites Gebiet teilen. Nicht schön aber machbar.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Auf diesem Bild kann man die Situation in etwa erahnen, links die Surfer, rechts die Kiter, nahe am Ufer ist keiner im Gleiten - weder heraus noch hinein.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sWfxTvArfSM/TpYAiBhBCyI/AAAAAAAAAXE/gHk_fW06TN4/s1600/20110712_121908.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://1.bp.blogspot.com/-sWfxTvArfSM/TpYAiBhBCyI/AAAAAAAAAXE/gHk_fW06TN4/s400/20110712_121908.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Wellen am Center I&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Amanspruchsvollsten sind bei diesen Bedingungen die Wellen.&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Abhängig von der Großwetterlage rollen vom Atlantik her 1m, an wenigen Tagen auch mal 2m hohe Wellen, ans Ufer. Diese sindüberlagert von 75cm hohen Wellen die der Wind innerhalb der 3km Länge aus Richtungder Costa Calma aufbauen konnte. Und dann kommen noch die kleinen Wellen vomCenter I dazu. Das ganze überlagert sich zu einem &lt;i&gt;"interessanten"&lt;/i&gt;Interferenzmuster, teilweise hat man das Gefühl senkrecht aus 1,5m Höheherunter zu fallen. Kleine Bretter und vorausschauendes &lt;i&gt;Slalom&lt;/i&gt; fahren rund um die schlimmsten Wellen-Berge und Täler hilft,trotzdem kostet das Surfen uns Normalsterblichen bei diesen Bedingungen sehrviel Kraft und auch Verletzungen sind nichts ungewöhnliches. Auf diesem Bild habe ich die beiden Berge der Sotavento Düse sowie die verschiedenen Wellenrichtungen eingezeichnet; in der Mitte ist das Hotel und das Center I.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-N8EEteGbbu8/TpXrSSuocQI/AAAAAAAAAV0/5cnQvoHRPFA/s1600/center+1+wellenrichtung.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="317" src="http://2.bp.blogspot.com/-N8EEteGbbu8/TpXrSSuocQI/AAAAAAAAAV0/5cnQvoHRPFA/s320/center+1+wellenrichtung.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 17px;"&gt;&lt;b&gt;Center I bei NW Wind&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="font-size: 15px; line-height: 17px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Amschönsten wie auch am seltensten war der Wind aus NW Richtung, also strengablandig. Ich kann mich an Tage erinnern, da sind wir alle den Strand entlanggeheizt, vom Center I bis zwei&amp;nbsp;kmweiter nach unten zum Speedstrip. Direkt unter dem Center I kam nochmals kurz dieWindabdeckung vom Gorriones Hotel und ab dann war man in dem Gebiet in demschon Speed Weltrekorde aufgestellt wurden. Dort ist, was man eigentlich mitder Sotavento Düse meint, das Tal zwischen den beiden Bergen (in obiger Karte alsBerg 1 und Berg 2 bezeichnet), völlig ungestört von irgend welchen Häusern oderBäumen wird der Passatwind dort hindurchgepresst und legt&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 17px;"&gt;nochmals&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 17px;"&gt;um 2 Windstärken zu. Aber vor allem ist er dort recht Konstant. Das folgende Bild ist von der Hauptstrasse aus aufgenommen und zeigt die beiden Berge links und rechts sowie das lange, sanfte Tal der Düse. Das Center I und das Hotel verstecken sich hinter dem einen Berg, Center II hinter dem Anderen.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7wNhHFvJZx4/TpXskg54kKI/AAAAAAAAAV8/g7xwyRV3W-s/s1600/Sotavento+D%25C3%25BCse.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-7wNhHFvJZx4/TpXskg54kKI/AAAAAAAAAV8/g7xwyRV3W-s/s320/Sotavento+D%25C3%25BCse.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Um die Unterschiede in der Windstärke zu zeigen habe ich vomHotel aus zwei Aufnahmen innerhalb von zwei Minuten gemacht, einmal das CenterI - kaum Schaumkronen - und einmal das Meer in der Sotavento Düse.&amp;nbsp;Das sieht doch wie zwei verschiedene Reviere anunterschiedlichen Tagen aus, oder? Es sind aber wiklich nur wenige Minuten unterschied zwischen den Aufnahmen.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-7SCr20Qav04/TpXstLObOjI/AAAAAAAAAWE/E_dr38LXuL8/s1600/wind1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-7SCr20Qav04/TpXstLObOjI/AAAAAAAAAWE/E_dr38LXuL8/s320/wind1.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-5parB6-orbc/TpXsvGPFX4I/AAAAAAAAAWM/MOC-r_wmIS0/s1600/wind2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="220" src="http://1.bp.blogspot.com/-5parB6-orbc/TpXsvGPFX4I/AAAAAAAAAWM/MOC-r_wmIS0/s320/wind2.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span style="font-size: 11pt; line-height: 115%;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Wiegesagt, früher war diese Windrichtung großartig. Heute ist diese Windrichtung wegen der Kite Zone undden zusätzlichen Hotels der Costa Calma eine Katastrophe. Richtung Norden kommtnach 500m die bereits erwähnte Steilküste mit Hotels und der Wind läßt starknach. Nahe am Ufer ist auch stark böiger Wind, das ganze los fahren wird alsonoch ärgerlicher und in die Kite Zone darf man nicht. Die einzige Chance wäresich vom Ufer zu entfernen, nur die Kiter haben das gleiche Problem, einen vielzu engen Bereich am Ufer entlang. Als Ergebnis müssen also die Surfer in derNähe des Ufers bleiben und die Kiter fahren parallel dazu dahinter. Furchtbar. Man könnteden Eindruck gewinnen, seit Rene Egli selbst mit dem Kite unterwegs ist, wurdendas Surfrevier stark beschnitten.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Biszu einem gewissen Grad kann man diese Einschränkungen verstehen. Das Gebiet istgroß und muß wegen der rauen Bedingungen überwacht werden - also weit hinausfahren geht nicht. Eine Horde Windsurfer durch die Kiter mit ihren langenSchnüren rasen sehen, inklusive Anfängern, lädt auch zu Problemen ein - um esvorsichtig auszudrücken. Die Surf und Kite Zone auszutauschen möchte man auchnicht, denn wenn ein Kiter abtreibt würde er unweigerlich mit den Schnüren denSurfern den Weg abschneiden.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Soweit so verständlich, nur die Realität ist komplizierter. Bei sehr starkem Windsind kaum Kiter unterwegs, speziell am späteren Nachmittag sind es dann oft nurnoch 5 Personen. Und das sind keine Anfänger sondern Profis. Die Surfer wisseninzwischen um die Geometrie der Kiter und wie viel Platz sie jeweils brauchensodass man sich arrangieren kann. Und gerade bei NNW Wind kann man zwarRaumschots den Strand entlang herunter fahren, das hinauffahren istschwierig bzw. eine Frage des Materials – mit Camber Speedsegel machbar, sonstsehr mühsam. Die Folge daraus ist, dass es nur sehr wenige Leute machen, wie die vergangenen Jahre mir gezeigt haben.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uMxnviuFKi4/TpX80k8-BOI/AAAAAAAAAWs/iGP8h-hahQc/s1600/20080628_120758.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://1.bp.blogspot.com/-uMxnviuFKi4/TpX80k8-BOI/AAAAAAAAAWs/iGP8h-hahQc/s320/20080628_120758.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Heuerhatte ich Glück und es war an einem Tag so ein Wind bei gemütlichen 6-7Bft. Denganzen Tag war an Speedfahren nicht zu denken, da man keine Chance hatte, beiden Kitern sicher und ohne andere zu stören durch zu kommen. Um 15:00 Uhr dannauf das 6.2 MK Slalom und 90l iSonic gewechselt, denn in der Kite Zone warennur noch zwei Personen und die sind weiter weg vom Ufer gefahren. Zwei Schlägemit jeweils 60km/h konnte ich machen, dann kam der Jetski, und hat daraufbestanden, dass ich mit Material ans Ufer gezogen werde. Dort wurde freundlichaber bestimmt gesagt - Kite Zone ist ein No-Go Bereich. Argumentation war dieübliche: Man stört die Kiter, das würden dann alle machen, ausSicherheitsgründen, Du hast die Mietbedingungen unterschrieben.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Nichteinmal eine Verwarnung bekommen sondern musste für den Rest des Tages das Material abgeben. Na ja, es war auch frech von mir, das gebe ichzu. Also probiert es selbst nicht auch aus.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Hier das Bild mit den GPS Daten von diesem Tag.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9FWO9H7it1g/TpXtJKThW0I/AAAAAAAAAWU/fer77YXY5og/s1600/center+1+ablandig.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-9FWO9H7it1g/TpXtJKThW0I/AAAAAAAAAWU/fer77YXY5og/s320/center+1+ablandig.png" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Übrigens, wenn man Beschwerden über die Freundlichkeit und Hilfbereitschaft des Teams liest, das war früher wirklich mitunter schlimm, die letzten 4 Jahre gibt es keinen Grund mehr zu Beanstandungen, bis auf die normalen Ausnahmen die man überall hat und eigentlich nicht der Rede wert sind.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Zusammengefasstkann man also über diese Windrichtung sagen, es ist die Hölle. Man ist 500m vomperfekten Spot entfernt und darf mit Mietmaterial nicht hinfahren. Die angereistenSurfprofis und Leute mit eigenem Material umfahren die Kitezone und treibensich dann den ganzen Tag bei perfekten Bedingungen in der echten Sotavento-Düseherum, mitunter fahren sie die 4km bis zum Center II. Zum heulen.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Hierein Bild aus der glorreichen Vergangenheit, direkt am Speedstrip und ein &lt;a href="http://www.youtube.com/watch?v=_E_Ff0qLUdk"&gt;Video&lt;/a&gt; das ich auf Youtube gefunden habe.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-V0LrC34mC_M/TpXtkobqUYI/AAAAAAAAAWc/O9h8PfNG9DE/s1600/speedstrip.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="212" src="http://3.bp.blogspot.com/-V0LrC34mC_M/TpXtkobqUYI/AAAAAAAAAWc/O9h8PfNG9DE/s320/speedstrip.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Am ärgerlichsten ist, dass es dafür Lösungen geben würde,wenn man denn möchte. Es würde schon genügen weniger dogmatisch zu sein. Oderwie wäre es bezahlte Surf-Safaris anzubieten wo eine ganze Gruppe die Streckeunter Aufsicht zurücklegt? Oder man kann nicht nur das Wunschboard sondern auch das Speedsegel für einen Tag im Center II haben? Irgendetwas davon.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Actionfotos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Eine andere Sache die ich an den beiden Centern sehr schätze, sind die Profi-Fotografen jeweils. Es gibt kaum eine andere Möglichkeit, so tolle Bilder und in so großer Auswahl von sich zu bekommen, wie dort. Am Center I schwimmt Roger von &lt;a href="http://www.spot-shot.com/HauptNavi-de.html"&gt;www.spot-shot.com&lt;/a&gt; sogar mit der großen Kamera hinaus um Bilder von ganz nah und in voller Action zu schießen, in einer Qualität bei der man jedem einzelnen Bild ansieht, es wurde von jemandem gemacht der Windsurfen kann/versteht und das Fotografieren gelernt hat.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Im Center II ist ein anderer Fotograf am Werk, da man dort praktisch am Strand entlang fährt, hat er es wesentlich leichter einen formatfüllend zu bekommen, dafür fehlt aber das Gefühl der Wildheit der Elemente. Aber die Bilder haben eine Ästhetik, einmalig.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;In beiden Fällen stellt man sich am Ende des ersten Tages kurz vor sodass der Fotograf weiss wie man in der Surfkleidung aussieht, er sortiert dann die Bilder vom ersten Tag in einen eigenen Order am Computer und fügt jeden Tag alleine die gemachten Bilder hinzu. Am Ende bekommt man eine CD mit 80(?) Bilder für 14 Tage, eines besser als das andere.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Auch wenn man selbst sich nur mühsam auf dem Brett halten kann, geschweige denn radikale Manöver fährt, die Bilder sind großartig.&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Andere Aktivitäten&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Eine sehr gute Sache sind die Standup Paddling Boards. BeiWind kann man damit sowieso nicht fahren, aber es kommt doch vor, dass an einemTag schlicht überhaupt kein Wind ist. Das Meer ist an solchen Tagen absolutflach, maximal kommt eine Atlantikwelle herein. Dann konnte man früher nur warten undsich langweilen. Oder heute eben mit den SUP Boards die Zeit vertreiben, ein riesiger Spass auch mit Kindern.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_nlKLIWvZ10/TpX_zh-TycI/AAAAAAAAAW8/r4Kh-tP1H7k/s1600/20100810_133251.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://2.bp.blogspot.com/-_nlKLIWvZ10/TpX_zh-TycI/AAAAAAAAAW8/r4Kh-tP1H7k/s320/20100810_133251.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Für die nicht-Surfer wie meinem 9 jährigen Sohn gibt es auchso einige Dinge die ihm sehr gut gefallen haben.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Zuerst einmal bietet sich ein Surfkurs an, oder? Die findenalle im Center II statt und wie schon gesagt, dort gibt es keinen Schatten.Würde&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;sich&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;jemand in die südliche Sahara den ganzen Tag zum bräunen legen?Unwahrscheinlich, die Sonneneinstrahlung in Fuerte ist gleich hoch. Also wirdman mit dem Kind dort hinfahren und nach dem Kurs sofort wieder zurückkommen.Hoffentlich ist noch ein Erwachsener Nicht-Surfer dabei, sonst wird das nervig.Die Kurse sind nett, der auch in der Lagune mitunter starke Wind macht dasLernen nicht einfach, aber man ist darauf eingestellt. Die einzige Beanstandungdie ich gehört habe und auch bestätigen kann ist, dass zu viel Kurszeit mitorganisatorischen Dingen verschwendet wird, die man mit bezahlt. Am ersten Tag 30 Minuten von zwei Stunden damit verbringen jedem Teilnehmer einen Lehrer zuzuordnen?&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Ein anderes Muss für die Kinder ist in den Wellen zuschwimmen und tauchen. Dazu wird man sinnvollerweise weit oberhalb des Center Iins Wasser gehen. Als Surfer sieht man Schwimmer mitunter nur sehr schlechtoder spät, mit der Finne überfahren zu werden klingt nicht angenehm, für beide Parteien. Also eherweiter weg. Man muss aber gut aufpassen, die Wellenströmung zieht einen binnenkürzester Zeit wieder in den Surfbereich.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yJu4Qo31IIQ/TpX9cmQcD5I/AAAAAAAAAW0/PN4fYhr2ajY/s1600/20110711_114724.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-yJu4Qo31IIQ/TpX9cmQcD5I/AAAAAAAAAW0/PN4fYhr2ajY/s320/20110711_114724.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Was wir erst letztes Jahr entdeckt haben ist der Durchbruchder Sandbank vor dem Hotel. Wenn die Flut abrinnt, bildet sich dort eine rechtstarke Strömung von der man sich auf einer Luftmatratze oder einem Bodyboardziehen lassen kann. Ist nicht gefährlich weil die Wellen verhindern dass manins Meer gezogen wird und das Wasser auch nicht tief ist, und es macht riesigSpaß.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Heuer hat Söhnchen im Hotel einen Kurs für Gerätetauchen besucht,der ihm ebenfalls sehr gut gefallen hat. Nicht gerade billig aber persönlicheBetreuung und Überwachung kostet auch der Tauchschule Geld, insofern angemessen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Ansonsten gibt es noch Angebote der Reiseveranstalter. DerOasispark bekommt immer gute Kritiken, mein Sohn(!) wollte in diesen Tierparkzwei Mal. Und die Fahrt mit dem Unterseeboot SubCat hat ihm auch gut gefallen.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Buchung&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Buchen kann man das Hotel über jeden Reiseveranstalter, das Mietmaterial und Kurse auch online auf der Webseite www.rene-egli.com. Gerade bei Kursen unbedingt eine Rückbestätigung anfordern, um etwas in der Hand zu haben. Ich persönlich buche ausnahmslos über&amp;nbsp;&lt;a href="http://www.sunandfun.de/"&gt;www.sunandfun.de&lt;/a&gt;,&amp;nbsp;einf&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;ach weil es die meisten Vorteile hat. Man bekommt das günstigste Angebot, wenn ein anderer Reiseveranstalter wie Neckermann billigere Angebote hat als die eigenen, wird einfach deren Reise für einen gebucht. Man hat alles aus einer Hand und gute Betreuung. Am wichtigsten für mich ist aber die Reiseleitung, die von Sun and Fun dort exklusiv für deren Gäste zur Verfügung steht, direkt am Hotel und in der Surfstation. Von anderen Vorteilen wie Ausflüge, Standup Paddling Boards gratis usw gar nicht gesprochen.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Und so sitze ich jetzt vor dem Computer, ein paar Monatenach diesen Erlebnissen, und gebe im Browser ein:&amp;nbsp; Zeige mir alle Sommerreviere fürFortgeschrittene die...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="MsoNormal"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"&gt;Mehr Fotos inklusive sehr großer Panoramaaufnahmen&amp;nbsp;&lt;a href="https://plus.google.com/u/0/photos/103566573834184086533/albums/5642472177879669793?hl=en#photos/103566573834184086533/albums/5642472177879669793"&gt;hier&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="MsoNormal"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4992779053811268262?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4992779053811268262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4992779053811268262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4992779053811268262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4992779053811268262'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/10/windsurfen-bei-rene-egli-in.html' title='Windsurfen bei Rene Egli in Fuerteventura 2011'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-u5E69-y4jAA/Tk50cNzZdtI/AAAAAAAAARk/3Z3avwFpiSE/s72-c/Panorama1.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Calle Punta del Roquito, 35628 Pájara, Spain</georss:featurename><georss:point>28.13841572288486 -14.239697456359863</georss:point><georss:box>28.13491522288486 -14.244632956359863 28.141916222884863 -14.234761956359863</georss:box></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-6697998378993565068</id><published>2011-08-19T10:41:00.000-07:00</published><updated>2011-09-29T23:27:08.754-07:00</updated><title type='text'>The war on patents</title><content type='html'>After having successfully filed a few patents myself and being involved in a few defensive cases I have to say, the entire patent business really got out of hand.&lt;br /&gt;&lt;br /&gt;The author Gregory N. Mankiw says in the book "Principles of Economics", the chapter "Externalities", that the goal of patents is to provide an incentive to research. And that makes sense, I might spend years of my life researching on a topic, then this gets public one way or the other, either because I monetarize it with a product or I publish my findings, and some other company takes that apart and sells the same thing cheaper as they did not waste money on research. But does this idea have anything to do with what is going on with those patent infringement law suits you see out there in the tech industry? Little. So how to solve that?&lt;br /&gt;&lt;br /&gt;One group of people has the opinion, the software is the evil part. Do not allow patents on software. I can understand that software patents are often trivial but neither they are the only ones nor is software trivial in all cases. So ruling out software would reduce the number of lawsuits quickly but it would not solve the patent problem as such. Not to mention that we would simply add some vague hardware requirements or creatively workaround that issue. Oh, that's not a computer, that's a tablet!&lt;br /&gt;&lt;br /&gt;So my approach would be to raise the bar on what is trivial or not. The patent office already tries that by applying a list of criteria against each filed patent and in general these criteria are sound. But still a lot of things slip through, imagine the Amazon One-Click patent.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;The research leading to the patent should have taken one calendar year or more.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No formal proof of that, just the statement of what was the goal of the research, what was uncovered, how many people worked how much time on it. Obviously the companies would lie about it as much as they want but the important point is, it would give others a lever to invalidate the patent claim easily. "So it took you one year and 10 people working on it to figure out a One-Click button with a delayed automatic checkout instead of clicking on checkout explicitly? I very much doubt that."&lt;br /&gt;&lt;br /&gt;That would cover all eventualities of research as well, e.g.&lt;br /&gt;Pfizer did an expensive research on a medicine against Angina Pectoris but test showed it lasted for four hours only and had one major unintended side effect. Now this medicine is sold under the name Viagra for a different application. Is it okay to patent that? Absolutely.&lt;br /&gt;&lt;br /&gt;After year of mathematical research someone found an algorithm with which you can compute prime factors much more efficient. That has impact to all current encryption methods. Applies for a patent? I would say yes, without a patent this research would not have been made.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;If you sue somebody over patent infringement, the court is allowed to render the patent invalid.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Today every patent lawsuit follows a two-pronged approach. First you defend your case telling you are not infringing at all. And as the patent is so widely defined, you suggest the patent should not have been granted in first place due to prior art. Pausing the lawsuit just to wait for the patent office decision takes too long and you could assume, they decided the one way before, why not again. On the other hand, the current lawsuit has all parties involved and it needs to dive deep into the topic anyhow. So let this court allow to render the patent invalid already. If they find the patent was valid they have to decide on damages and therefore look at all the details anyhow. And if the outcome is, the patent has prior art, it is invalid anyhow. This would also increase the pressure to resolve the issue outside of the court as the risk for the applicant is higher. And if the patent was violated, there is nothing to fear about suing them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-6697998378993565068?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/6697998378993565068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=6697998378993565068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6697998378993565068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6697998378993565068'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/08/war-on-patents.html' title='The war on patents'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-2349514234623289098</id><published>2011-03-29T04:39:00.000-07:00</published><updated>2011-03-29T04:47:00.913-07:00</updated><title type='text'>Update - GPS Tripod with Stepper Motors</title><content type='html'>I have changed the design to Stepper Motors, controlled by the TMC222 IC.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-NYMlvGxVR1s/TZHGI2ZoiYI/AAAAAAAAAFA/9XsFZjiKLvQ/s1600/DSC_9201.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/-NYMlvGxVR1s/TZHGI2ZoiYI/AAAAAAAAAFA/9XsFZjiKLvQ/s400/DSC_9201.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5589466467887778178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-qk5HtLoceaQ/TZHGIm_TxxI/AAAAAAAAAE4/KEQredCyOuA/s1600/DSC_9199.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/-qk5HtLoceaQ/TZHGIm_TxxI/AAAAAAAAAE4/KEQredCyOuA/s400/DSC_9199.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5589466463750833938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/-UgsyZMwoehg/TZHGIek-yHI/AAAAAAAAAEw/eERvIaclXbY/s1600/DSC_9195.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://3.bp.blogspot.com/-UgsyZMwoehg/TZHGIek-yHI/AAAAAAAAAEw/eERvIaclXbY/s400/DSC_9195.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5589466461492922482" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-Cm7SeJiAPew/TZHGltQEElI/AAAAAAAAAFI/MDoeFK6VXlU/s1600/DSC_9202.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/-Cm7SeJiAPew/TZHGltQEElI/AAAAAAAAAFI/MDoeFK6VXlU/s400/DSC_9202.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5589466963647926866" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-2349514234623289098?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/2349514234623289098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=2349514234623289098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2349514234623289098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2349514234623289098'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/03/update-gps-tripod-with-stepper-motors.html' title='Update - GPS Tripod with Stepper Motors'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-NYMlvGxVR1s/TZHGI2ZoiYI/AAAAAAAAAFA/9XsFZjiKLvQ/s72-c/DSC_9201.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4235541928314153099</id><published>2011-03-06T12:19:00.000-08:00</published><updated>2011-03-06T12:31:47.518-08:00</updated><title type='text'>GPS Tripod V3</title><content type='html'>Thanks to the CNC mill I got, I am able to build much more sturdy mechanics for the GPS Tripod. Initially I thought I will have to use alloy for it but wanted to build a prototype out of PolyCarbonat, but actually, I like the material. Should be good enough for the precision required and later I can still switch to metal.&lt;br /&gt;Overall it looks very good, software got ported to the new platform, a PIC18F2550 microprocessor with the major advantage of having an additional USB port. The board I am using is the &lt;a href="http://www.droids.it/cmsvb4/content.php?224-990.020-MuIn-USB-Datasheet-EN"&gt;MuIn USB&lt;/a&gt; from droids.it, which is resold worldwide.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-dSOdSujq42c/TXPs3p6owVI/AAAAAAAAAEg/VEJgGwnw5VU/s1600/20110219_085730.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/-dSOdSujq42c/TXPs3p6owVI/AAAAAAAAAEg/VEJgGwnw5VU/s400/20110219_085730.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5581064804130931026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In this version I am still relying on digital RC servos, which are fast but not as precise as I want them to be. For GPS tracking it is good enough, put for panorama pictures like the &lt;a href="http://www.gigapan.org/"&gt;Gigapan&lt;/a&gt; I will probably switch to stepper motors and a single gear. But that's a minor change.&lt;br /&gt;&lt;br /&gt;The other decision to make is how to control the tripod.&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Tripod has LCD and keyboard: More expensive to build and buy&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tripod is configured via a laptop but operates autonomous: a good compromise&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tripod is controlled by the laptop: You have much more options like reading the camera settings, preview images,... utilizing &lt;a href="http://www.gphoto.org/"&gt;gPhoto2&lt;/a&gt; libraries&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;For a GPS Tracker I would probably decide on option 2, for panorama applications I personally prefer option 3. So maybe the result is two different models?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/-Nj-6nXgbnUk/TXPvGBr--aI/AAAAAAAAAEo/4jVRmzNHXuc/s1600/20110219_085726.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://4.bp.blogspot.com/-Nj-6nXgbnUk/TXPvGBr--aI/AAAAAAAAAEo/4jVRmzNHXuc/s400/20110219_085726.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5581067250053347746" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4235541928314153099?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4235541928314153099/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4235541928314153099' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4235541928314153099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4235541928314153099'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/03/gps-tripod-v3.html' title='GPS Tripod V3'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dSOdSujq42c/TXPs3p6owVI/AAAAAAAAAEg/VEJgGwnw5VU/s72-c/20110219_085730.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-2007808346125071314</id><published>2011-03-06T11:03:00.000-08:00</published><updated>2011-03-06T12:02:15.656-08:00</updated><title type='text'>Stückliste Gehäuse für Fräse</title><content type='html'>Aluprofil:&lt;br /&gt;&lt;br /&gt;7 Stück AlClipTec Aluprofil 45x45 L=1200mm&lt;br /&gt;4 Stück AlClipTec Aluprofil 45x45 L=750mm&lt;br /&gt;4 Stück AlClipTec Aluprofil 45x45 L=2000mm&lt;br /&gt;4 Stück AlClipTec Aluprofil 45x45 L=1600mm&lt;br /&gt;3 Befestigungswinkel 45-er (VE 10 St.) Komplettset&lt;br /&gt;10 Stück Profilverbinder 45-er&lt;br /&gt;1 Abdeckkappen 45-er (VE 10 St.)&lt;br /&gt;2 Stellfüße 45-er (VE 4 St.)&lt;br /&gt;8 Stück Scharnier Metall 45-er&lt;br /&gt;9 Stück Abdeck/ -Einfassprofil 45-er&lt;br /&gt;&lt;br /&gt;Zuerst werden auf einer Seite in die 4 Stück 2000mm Steher und 4 Stück 750mm Abstützung ein M10 Gewinde geschnitten. Aufgrund der Größe ist das eine recht mühsame arbeit, nächste mal würde ich den Lieferanten fragen ob er das bereits machen kann. In dieses Gewinde werden die Füsse geschraubt, dabei unbedingt auf eine gleiche Einschraubtiefe achten.&lt;br /&gt;Danach werden die Steher und der Boden mit Hilfe der Profilwinkel zusammengebaut. Da man die Nutensteine einstecken kann und die sich in die richtige Position beim festschrauben von selbst drehen, ist die Reihenfolge egal.&lt;br /&gt;Der Rahmen für das Dach wird mit den Profilverbindern, die in die Nut eingelegt werden, an den Stehern befestigt. Das hat den Vorteil dass man das Glas nicht an den Ecken abschleifen muss, sondern Seitenfenster und Türen rechteckig bestellen kann.&lt;br /&gt;Einzig der Mittelpfosten am Dach, der das Dach von 1200mm x 1600mm auf zwei Flächen 1200mm x 800mm (-22,5mm für je eine halbe Seite des Profils), belegt die Nut. Aber als Dach habe ich keine Glasplatte sondern ein 8mm Hohlkammerprofil verwendet. Dieses ist leicht auszusägen und dank der geringen Spannweite stabiler und billiger.&lt;br /&gt;&lt;br /&gt;Glas:&lt;br /&gt;&lt;br /&gt;1 Stück 1620mm x 1180mm Verbundglas 6mm (Rückwand, 20mm Übermaß für die Nut)&lt;br /&gt;1 Stück 1220mm x 1180mm Verbundglas 6mm (Seitenwand)&lt;br /&gt;2 Stück  795mm x 1154mm ESG 6mm mit Scharnier- und Griffbohrungen (Tür 1)&lt;br /&gt;2 Stück  595mm x 1154mm ESG 6mm mit Scharnier- und Griffbohrungen (Tür 2)&lt;br /&gt;&lt;br /&gt;Die Türen spannen also die Öffnung der Größe 1600mm x 1160mm bzw 1200mm x 1160mm (=2000mm - 750mm - 2*45mm = 1160mm) auf, haben aber Luft rundherum von 2-3mm.&lt;br /&gt;&lt;br /&gt;Das Dach selbst ist entweder aus Hohlkammerplatten oder Polycarbonatplatten 3mm in der Abmessung:&lt;br /&gt;2 Stück 800mm x 1220mm&lt;br /&gt;An zwei Ecken muss der Platz für die Profilverbinder ausgeschnitten werden.&lt;br /&gt;&lt;br /&gt;Die Bodenplatte auf der die Fräse steht hat die Abmessungen 1650mm x 1250mm und mit der Stichsäge werden die Ecken für die Steher ausgesägt, und mit einer Lochkreissäge eine Bohrung für die Kabel und Staubsaugerschlauch geschnitten.&lt;br /&gt;Die 1650mm ergeben sich aus dem Innenmaß von 1600mm plus 35mm soll die Platte bei der Tür überlappen sodass für die Türe noch 10mm Platz ist. Und auf der Seite der Seitenwand bleiben noch 22mm frei bis zur Glasplatte, sicherheitshalber wird nur 15mm Überlappung eingeplant.&lt;br /&gt;&lt;br /&gt;Das einzige das noch fehlt ist&lt;br /&gt;Zellkautschuk selbstklebend 4mm&lt;br /&gt;um daraus die Polster zu schneiden an denen das Schanier auf der Glastür aufliegt, die Schraube soll ebenfalls nicht direkt mit dem Glas in Berührung kommen, daher noch&lt;br /&gt;16 Stück M8 Kunststoff Beilagscheiben.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-PWSFaGNYyO0/TXPoNr9axjI/AAAAAAAAAEY/p-6tp18MIsg/s1600/geh%25C3%25A4use.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 379px;" src="http://2.bp.blogspot.com/-PWSFaGNYyO0/TXPoNr9axjI/AAAAAAAAAEY/p-6tp18MIsg/s400/geh%25C3%25A4use.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5581059685078451762" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-2007808346125071314?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/2007808346125071314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=2007808346125071314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2007808346125071314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2007808346125071314'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/03/stuckliste-gehause-fur-frase.html' title='Stückliste Gehäuse für Fräse'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-PWSFaGNYyO0/TXPoNr9axjI/AAAAAAAAAEY/p-6tp18MIsg/s72-c/geh%25C3%25A4use.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4417916442757390000</id><published>2011-03-06T08:37:00.000-08:00</published><updated>2011-03-06T12:09:26.059-08:00</updated><title type='text'>Die CNC Fräse AL1065 von Team Haase</title><content type='html'>Es ist soweit, nach 10 Jahren nachdenken habe ich mir eine CNC Fräse zum Geburtstag schenken lassen. Ich habe lange darüber nachgedacht, ob so etwas überhaupt Sinn macht und mir eine Liste von Dingen aufgeschrieben welche ich gerne Fräsen möchte, z.B. eine stabilere Version des GPS Stativs.&lt;br /&gt;&lt;br /&gt;Die Fräse selbst ist von der Firma Haase, das Modell &lt;a href="http://www.team-haase.de/index.php?option=com_content&amp;view=article&amp;id=4&amp;Itemid=30"&gt;AL1065&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-wStmLPYRyJ0/TXPGyCogT8I/AAAAAAAAAEA/1BFkJ21ijmE/s1600/al1065_k.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 346px;" src="http://2.bp.blogspot.com/-wStmLPYRyJ0/TXPGyCogT8I/AAAAAAAAAEA/1BFkJ21ijmE/s400/al1065_k.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5581022926244696002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Im Vorfeld habe ich mich viel mit den verschiedenen Bauformen beschäftigt und bei den einfachen Portalfräsen wird die X-Achse einfach mit der Spindel geführt. Das Ergebnis ist dass sich die Spindel unter Last etliche 1/10mm durchbiegt und man dann eben so viel Ungenauigkeit hat. Desweiteren wird man immer ein wenig kippen feststellen, was weiter zur Ungenauigkeit beträgt. Die AL Serie wird auf einem 20cm Rahmen eingespannt und so hat man eben diese 20cm um das Kippmoment aufzunehmen. Die Spindel selbst wird rein für den Antrieb verwendet. Die resultierende Genauigkeit ist beeindruckend. Überhaupt merkt man an vielen Details dass die Firma Haase schon viele Fräsen gebaut hat und immer wieder verbessert. Beispielsweise die Energiekette läuft auf einer Aluschiene die gleichzeitig die Abdeckung der y-Achse ist. Sicher eine Kleinigkeit, aber das sind genau die Dinge die man bei den ersten Generationen vergessen würde.&lt;br /&gt;&lt;br /&gt;Aus Angst vor Schrittverlusten habe ich eine externe USB-Steuerung namens &lt;a href="http://www.boenigk-electronics.com/web/index.php"&gt;CNCGraf&lt;/a&gt; dazugenommen.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Der nächste Schritt war für die Fräse ein Gehäuse anzuschaffen um die Staubbelastung im Raum gering zu halten. Auch hier gab es die Möglichkeit ein Gehäuse zu kaufen, die normalen Matrixdrucker Lärmschutzgehäuse wären zwar nett gewesen, nur gibt es sie nicht in der richtigen Größe. Und so bin ich bei bauen verblieben. Die Firma &lt;a href="http://www.blank-mt.com/kataloge/7%20Profiltechnik-katalog09.pdf"&gt;blank-mt&lt;/a&gt; hat mich da sehr gut beraten, was Tragfähigkeit, Verbindungsoptionen und Kosten sparen angeht und so habe ich dort 45mm Alu Profile gekauft die sehr leicht aber auch Stabil zusammengebaut werden können.&lt;br /&gt;&lt;a href="http://wdaehn.blogspot.com/2011/03/stuckliste-gehause-fur-frase.html"&gt;Stückliste&lt;/a&gt; im nächsten Post&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-TPeInTBpFWY/TXPJxF9TtJI/AAAAAAAAAEI/106x-xMl2WU/s1600/20110218_183318.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 288px;" src="http://1.bp.blogspot.com/-TPeInTBpFWY/TXPJxF9TtJI/AAAAAAAAAEI/106x-xMl2WU/s400/20110218_183318.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5581026208492270738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Auf das Basisgerüst selbst liegt die Bodeplatte aus 10mm Sperrholz wasserabweisend beschichtet und auf dem steht dann die Fräse. Gesamtkosten 560.- EUR für die Profile, Scharniere und sonstiges Befestigungsmaterial.&lt;br /&gt;Die Seitenscheiben sind aus 6mm Verbundglas, die Türen aus 6mm ESG. Der Vorteil der Verbundscheiben ist dass sie bei Beschädigungen nicht sofort ganz kaputt gehen, allerdings bestehen die aus zwei aneinander geklebten 3mm Scheiben und halten entsprechend nur sehr wenig aus. Für die Türen inklusive der Löcher für Scharniere und Griffe wäre das nicht stabil genug, und so ist es das Einscheiben-Sicherheitsglas geworden. Polycarbonat Platten hätten bezüglich Widerstandfestigkeit mehr Vorteile gehabt aber durch die geringere Masse ist die Lärmdämpfung weniger gegeben. Und am wichtigsten, dort hätten alle Türen stabile Rahmen benötigt. Und Polycarbonat ist wesentlich teurer. Kosten für das Glas waren um 700.- EUR.&lt;br /&gt;&lt;br /&gt;Als Dichtung verwende ich bei den Türanschlägen eine Duschdichtung. Die wird einfach aufgesteckt und hält am 6mm Glas einwandfrei, selbst ohne kleben.&lt;br /&gt;An der Ober- und Unterkante habe ich 5mm Velourbürste selbstklebend angebracht, die ist elastisch genug um dicht zu sein und gleichzeitig nicht abgestreift zu werden. 10m kosten dabei 11.- EUR.&lt;br /&gt;&lt;br /&gt;Die Steuerung übernimmt ein alter Laptop unter Windows 7, der keinen Akku mehr hat. Als Monitor verwende ich aber einen 15" Touchmonitor von 3M mit 1024er Auflösung. 3M baut wirklich gute Geräte für die Industrie und stellt auch Treiber und Software für Windows 7 zur Verfügung. Und der Monitor beitzt einen Vesa Lochabstand für die Montage. Der Touchmonitor musste unbedingt auf Kapazitiver Technologie basieren, und nicht resistiv oder gar optisch, um eine hohe Präzision in staubiger Umgebung zu gewährleisten. Befestigt ist der Bildschirm an einer dreh und neigbaren Halterung um weitere 20.- EUR. Ist wirklich großartig das NC-Programm mit dem Finger zu bedienen. Mich hat der Monitor gebraucht 70.- EUR bei eBay gekostet. Höhere Auflösung bringt nichts, dann werden die Icons nur zu klein.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/-BlAGeMevtHo/TXPPN-HR3mI/AAAAAAAAAEQ/X9e6pPMfYgc/s1600/20110218_183825.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/-BlAGeMevtHo/TXPPN-HR3mI/AAAAAAAAAEQ/X9e6pPMfYgc/s400/20110218_183825.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5581032202160954978" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4417916442757390000?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4417916442757390000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4417916442757390000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4417916442757390000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4417916442757390000'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2011/03/die-cnc-frase-al1065-von-team-haase.html' title='Die CNC Fräse AL1065 von Team Haase'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-wStmLPYRyJ0/TXPGyCogT8I/AAAAAAAAAEA/1BFkJ21ijmE/s72-c/al1065_k.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4183036159093709183</id><published>2010-01-01T13:33:00.000-08:00</published><updated>2010-01-03T00:24:09.524-08:00</updated><title type='text'>Getting the max out of UPnP</title><content type='html'>I just did some counting, we have about 10'000 photos and rarely view them. Why? Very simple, because you can't find anything. Obviously we have a directory structure based on date and incident like 2002/Kids-are-born/ but you never want to see the 200 images taken at that day. The worst photos have been deleted, but out of those 200 just 5 are good enough to show to others. So we could copy those into a special folder but then once you want to view all pictures taken at the day, another time only portrait photos of the kids should be returned, or you want to see the very best photos only.&lt;br /&gt;This calls for a database of same kind with keywords to each picture. Keyword hierarchies regrading Who? Where? When? What kind of? Reason? Rating?....&lt;br /&gt;&lt;br /&gt;An easy question to answer is where to enter that data as the Exif standard is all about that, a method to store this kind of information in the jpeg file itself. But to search for specific tags, a database is needed. We experimented with different image databases, starting from Windows programs like Picasa, &lt;a href="http://www.faststone.org/FSViewerDetail.htm"&gt;FastStone Image Viewer&lt;/a&gt;, Adobe LightRoom and Adobe Bridge, or WebBased solutions like Flickr and the PS3 internal Photo Gallery. Every solution had its unique pros and cons. The Windows programs are very flexible and easy to use, yet their internal databases do not cope with these amounts of files. Not to mention how to view the photos on other equipment like the PS3 or the TV in the sleeping room.&lt;br /&gt;&lt;br /&gt;Because we use UPnP already for distributing mp3s and Videos across the house, that was the first thing to investigate. How fast is the MediaServer, can it cope with the number of pictures and how would you setup the system to accomplish the task of viewing just the high rated photos, or just the Windsurfing Photos?&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_trZeScPDm6Q/Sz59tkKlkTI/AAAAAAAAADk/VzKOx2ExOeo/s1600-h/mthier.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 175px; height: 400px;" src="http://4.bp.blogspot.com/_trZeScPDm6Q/Sz59tkKlkTI/AAAAAAAAADk/VzKOx2ExOeo/s400/mthier.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5421909223156322610" /&gt;&lt;/a&gt;&lt;br /&gt;Our UPnP server is &lt;a href="http://mediatomb.cc/"&gt;Mediatomb&lt;/a&gt;, I have upgraded it to the latest 0.12 version and implemented a new import.js script. This scripts creates a hierarchy like shown here (sorry, it's in German). Basically it lets me search for images by various categories, the Camera Model used, the Date the picture was taken, the storage location, the hierarchical keywords stored in the Exif data and the rating of the picture (If you use Vista or Win7, you can rate the picture from 0 to 5 stars). Especially the rating is important as with that I can view the best 100 pictures out of the 10'000 by viewing just the 5* rated ones, or just the 4* ones or all that are rated 1* or better ("* oder besser" in German).&lt;br /&gt;&lt;br /&gt;The cool thing now is that there are various ways to few the same pictures.&lt;br /&gt;* The neighbors visited us, in the background a slideshow was running with all images tagged with their name. So they have seen their kids in various activities at our place.&lt;br /&gt;* I was in the mood of going though all Windsurfing images of all years.&lt;br /&gt;* Look, these are the images I have taken yesterday.&lt;br /&gt;* Or simply a slideshow of the best 500 photos, meaning viewing all photos in the folder 3* rated or higher.&lt;br /&gt;&lt;br /&gt;And this functionality is available on all UPnP clients, the PS3, the TV built-in one, the one in the Gym, whatever.&lt;br /&gt;&lt;br /&gt;One UPnP Client however is not supported, that is Win7 Media Player. The &lt;span style="font-style:italic;"&gt;ingenious&lt;/span&gt; idea Microsoft had was to use UPnP as a pure transport layer. So the Media Player WMP12 browses through the entire tree, sucks in all 10'000 photos, all mp3s, all Videos everything and wants that to be organized in their own library. They want to read the entire database of mediafiles to store it in their database. Copying a database? Sounds stupid? Probably is. The first problem with that is it takes forever. The second, as I have multiple ways to navigate to the same picture, all pictures show up multiple times. I have checked the low level UPnP protocol, it is really a simple browse through the root directory, not even constraining the mediatype. Each file found is sucked in, each directory found will be browsed recursively. And on top there are other limitations in the Win7 UPnP client, like no distinction between thumbnails and the real file etc.&lt;br /&gt;&lt;br /&gt;Okay, so I am using XBMC as a Windows Client instead. Too bad.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Overall I am very happy with the implementation. The Mediatomb database is blazing fast, I got what I was looking for, still places for improvements, but these mostly depend on the UPnP client capabilities. I would just love to open a globe on the UPnP Client, the client would issue a search on all geocoded images with a 5* rating belonging to the current map area and choose one after the other. Have you seen on the PS3 -&gt; Network -&gt; Live with Playstation? I can just envision how this could look like, right now all the globe does is showing the weather conditions of 5 cities in Europe. I just hope the globe will support UPnP as well in future, I bet Sony will not.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next to come: The technical setup to make above happen.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4183036159093709183?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4183036159093709183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4183036159093709183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4183036159093709183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4183036159093709183'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2010/01/getting-max-out-of-upnp.html' title='Getting the max out of UPnP'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_trZeScPDm6Q/Sz59tkKlkTI/AAAAAAAAADk/VzKOx2ExOeo/s72-c/mthier.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-530393259955219049</id><published>2009-12-31T09:57:00.000-08:00</published><updated>2009-12-31T11:12:10.417-08:00</updated><title type='text'>Wishlist for products</title><content type='html'>There are so many opportunities of making business for established companies and yet they are not taken.&lt;br /&gt;&lt;br /&gt;* As said in this blog before, why does not every single camera support bluetooth? Bluetooth as the standard method to retrieve GPS coordinates and as a remote control.&lt;br /&gt;&lt;br /&gt;* A waterproof camera like the Pentax W80 with a wide angle lens (18mm equivalent). Especially with underwater or water sport photos where the camera is right at the action, the wide angle would be desperately needed. I tried to rig the camera on the boom of a windsurfing sail - you can see my head but nothing else.&lt;br /&gt;&lt;br /&gt;* A waterproof camera with no openings, it is charged by induction and pictures are downloaded via WLAN&lt;br /&gt;&lt;br /&gt;* Speaking of WLAN, Liveview found on DLSRs should broadcast the image via WLAN built in. This would allow for all kinds of special operations, starting from Studios (The Nikon WT-4 is an addon with cables! and costs 700USD or so!), Astrophotography... Just imagine you could control your camera from an IPhone and watch the Liveview screen there. (Note, there is a software that claims to does that but when you dig into the details, it uses a PC as a bridge from USB of the Camera to WLAN)&lt;br /&gt;&lt;br /&gt;* Why does the PS3 have a software like Photo Gallery, I can't think about any scenario where an user would do the tagging of photos with the PS3. The Playstation is for viewing, nothing else.&lt;br /&gt;&lt;br /&gt;* Why on earth does PSP support LocationFree Player but not any UPnP server? Nobody will by a LocationFree Server just for the PSP and people using this kind of technology usually have different UPnP clients and these do not support the LocationFree Server. So if it is to sell the LocationFree stuff better, make it a common UPnP server. Much more market opportunities.&lt;br /&gt;&lt;br /&gt;* An Android based PhotoFrame would make sense as well. Then you can use it to show photos from the SD card, you can stream them via UPnP, and you can run other apps like Alarm Clock, eMail and Calendar client and install more apps. In fact using Android all you have to do is connect an Android motherboard with a LCD screen, software does not need any modifications. Anyway, this is in the worx already I am sure. Just a matter of time. Just imagine a touchscreen on the living room wall where you can see and enter todays appointments stored on the central email server.&lt;br /&gt;&lt;br /&gt;* A door bell with Video using TCPIP. Think about Skype, available on the computer, on the cell phone, on the tablet PC,... and used as a door bell?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-530393259955219049?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/530393259955219049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=530393259955219049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/530393259955219049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/530393259955219049'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2009/12/wishlist-for-products.html' title='Wishlist for products'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-3795568391287289536</id><published>2009-08-24T07:42:00.000-07:00</published><updated>2009-08-24T07:55:16.415-07:00</updated><title type='text'>Pimp my Telescope Part 3</title><content type='html'>Some more technical data:&lt;br /&gt;&lt;br /&gt;PCB 1:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnAcusNLI/AAAAAAAAADM/TJCKJEeuQb0/s1600-h/pcb1.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 391px;" src="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnAcusNLI/AAAAAAAAADM/TJCKJEeuQb0/s400/pcb1.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5373540931560289458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PCB 2:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnhPtdcBI/AAAAAAAAADU/ct-SbCYuicI/s1600-h/pcb2.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 386px;" src="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnhPtdcBI/AAAAAAAAADU/ct-SbCYuicI/s400/pcb2.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5373541495001149458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A 3D graph of the PCB:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnvg8niFI/AAAAAAAAADc/Y0RXdolX5jU/s1600-h/pcb3.PNG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 398px; height: 400px;" src="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnvg8niFI/AAAAAAAAADc/Y0RXdolX5jU/s400/pcb3.PNG" border="0" alt="" id="BLOGGER_PHOTO_ID_5373541740146296914" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-3795568391287289536?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/3795568391287289536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=3795568391287289536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3795568391287289536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3795568391287289536'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2009/08/pimp-my-telescope-part-3.html' title='Pimp my Telescope Part 3'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_trZeScPDm6Q/SpKnAcusNLI/AAAAAAAAADM/TJCKJEeuQb0/s72-c/pcb1.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-1263024718013150389</id><published>2009-08-23T11:05:00.000-07:00</published><updated>2009-08-23T11:32:11.520-07:00</updated><title type='text'>Pimp my Telescope Part 2</title><content type='html'>After describing the general design ideas &lt;a href="http://wdaehn.blogspot.com/2009/08/pimp-my-meade-telescope.html"&gt;in part 1&lt;/a&gt; and how the Laser was fitted into the system, the remaining parts are less fency.&lt;br /&gt;On switch controls the environmental lamp, the one the Laser flashes prior to engaging as safety warning. And two other switches turn on the LEDs for the polefinder and the finder scope. But there as well I had a problem before. Your goal is to get the selected object exactly into the center of the crosshair illuminated via the LEDS. When is it in the center? When you can't see it anymore. Didn't like that, so the microcontroller does not simply switch on the LEDs, it keeps them flashing. Simple implementation but one of the once you have seen it you do want to miss that again.&lt;br /&gt;The power line is connected to one of the analog-digital converters of the microcontroller to measure the voltage of the battery and if it droppes below a threshold, the control LED on the PCB starts flashing. Oh, did I mention I use LiPo batteries with 11.1V known from RC helicopters as power source? They are compact, cheap, do not discharge when not used - very important! - but have one downside, they should never get discharged entirely. That's the reason for that warning light.&lt;br /&gt;&lt;br /&gt;The dew shield and the temp sensor I will connect to the board later the year. And the next major improvement is to listen to the Autostar internal bus to understand its two-wire interface protocol. Then I want to respond to the autostar computer in the beginning when it is in the scanning phase and tell it is a Meade focuser. This should enable the focuser screens on the Autostar and the connected laptop. I could use these buttons then for various things like turning on the laser via the computer. Or I connect a motor to the focuser that understands the standard I²C protocol the microcontroller outputs to the RJ-11 connector. I am not that thrilled about the autostar protocol of the focuser, all you can do is selecting the speed of the focuser motor and not its absolute position but okay, we have to live with that.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-1263024718013150389?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/1263024718013150389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=1263024718013150389' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/1263024718013150389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/1263024718013150389'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2009/08/pimp-my-telescope-part-2.html' title='Pimp my Telescope Part 2'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-8966619587535239734</id><published>2009-08-20T07:54:00.000-07:00</published><updated>2009-08-24T07:31:16.932-07:00</updated><title type='text'>Pimp my Meade Telescope</title><content type='html'>As another project I bought an used Meade Telescope, a LXD55 8" Smith Newton with Autostar. This is a GoTo Mount, meaning once you did setup the scope it moves to the star or planet you picked by name and keeps the object centered. It was a nice learning experience however what I liked the most was enhancing it.&lt;br /&gt;&lt;br /&gt;1. A Laser visible in the sky as a "finder".&lt;br /&gt;2. The cross-hair occular should be illuminated by the main power, not a battery, and it should blink.&lt;br /&gt;3. Same with the pole finder.&lt;br /&gt;4. Dew shield with heater should be temperature controlled.&lt;br /&gt;5. A simple light.&lt;br /&gt;6. Lithium Ion Battery saver.&lt;br /&gt;7. An electric focuser motor controlled by the Meade Autostar computer&lt;br /&gt;&lt;br /&gt;Let's start with the Laser:&lt;br /&gt;&lt;br /&gt;The problem for me was usually, what star am I looking at? During the initialization of the scope, it moves to the appoximate position of a star and your task is to center it. When you look at the sky you can see the star in question as the brightest object in that region. When you look through the main scope you can see tens of stars with similar brightness but certainly not the one you are looking for. And in the finder - a second attached but smaller scope with a bigger angle of view - there are three equally bright stars. So you have to move the scope for quite some time until you can be sure you identified the constellation and are pointing to the correct star. With a Laser it's a piece of cake.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/So1ojy1LsLI/AAAAAAAAACs/Fx9PAyWKh0A/s1600-h/20090819_220901.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 346px;" src="http://2.bp.blogspot.com/_trZeScPDm6Q/So1ojy1LsLI/AAAAAAAAACs/Fx9PAyWKh0A/s400/20090819_220901.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5372064894672416946" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;ATTENTION: Only use Class 2 Laserpointers with &lt;1mW power. They are strong enough to be visible in the sky given average moist weather conditions. And only these are not dangerous to humans or animals. And not dangerous does not mean completely harmless either. So never point at somebody else, neither direct nor indirect (reflections). Above image was shot with an exposure time of 8 seconds using a 1.4 aperture setting.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can clearly see where the scope points to, you do not have to make any artistic exercises for multiple minutes when looking through the finder. The Laser is a stripped Laserpointer, the green ones work best as the human eye is most sensitive for this color.&lt;br /&gt;&lt;br /&gt;It is placed at the telescope clamp onto a bar where I screwed in two bushings with three adjustment screws, similar to how a viewfinder is adjusted.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_trZeScPDm6Q/So1tAsejpiI/AAAAAAAAAC0/Tao8IR6fvUk/s1600-h/20090819_221002.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://1.bp.blogspot.com/_trZeScPDm6Q/So1tAsejpiI/AAAAAAAAAC0/Tao8IR6fvUk/s400/20090819_221002.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5372069789229622818" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKkJHUBjRI/AAAAAAAAADE/T0nw162oLtE/s1600-h/20090728_114814.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 266px;" src="http://2.bp.blogspot.com/_trZeScPDm6Q/SpKkJHUBjRI/AAAAAAAAADE/T0nw162oLtE/s400/20090728_114814.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5373537781895236882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not beautiful yet, but when I find the time for a CAD plan, I will ask a friend to mill that out of alloy.&lt;br /&gt;&lt;br /&gt;One design question I asked myself was if that system should be completely independent from the telescope or plugged in to the Autostar. Given the fact that I keep forgetting to turn off the polfinder LED and hence the battery is always empty next time I need it, I certainly want to use the Autostar power. So I need to have a DC-DC converter from 12V to 3V between the AUX port of the mount and the Laser. Oh, and a switch somewhere on the mount, not the tube to avoid shaking it.&lt;br /&gt;And a safety mechanism should be implemented as well to warn people the Laser is about to engage. And.....and I need a microcontroller.&lt;br /&gt;&lt;br /&gt;I designed a PCB that &lt;br /&gt;1. is connected to the Aux-Port to draw the power and listen on the Autostar internal bus&lt;br /&gt;2. has rocker switches for the different functionality&lt;br /&gt;3. a RJ-45 connector to connect to a daugther PCB, a tiny one distributing the signals required at the tube (Laser, Temp Sensor, Finderscope LED)&lt;br /&gt;4. a RJ-11 connector for the I²C bus of the microcontroller as a future expansion connector&lt;br /&gt;5. a few mini-usb plugs for the functionalities required at the mount (Polefinder LED, Lamp)&lt;br /&gt;6. a connector for the dew shield heater&lt;br /&gt;&lt;br /&gt;So when I switch on Laser, first the LED lamp starts blinking for a few seconds and then the laser engages.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-8966619587535239734?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/8966619587535239734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=8966619587535239734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/8966619587535239734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/8966619587535239734'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2009/08/pimp-my-meade-telescope.html' title='Pimp my Meade Telescope'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_trZeScPDm6Q/So1ojy1LsLI/AAAAAAAAACs/Fx9PAyWKh0A/s72-c/20090819_220901.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-8309217450663003619</id><published>2008-09-27T09:30:00.000-07:00</published><updated>2008-09-27T09:50:06.708-07:00</updated><title type='text'>GPS on Nikon - things to watchout for</title><content type='html'>There are many GPS solutions available, the details are important.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Question 1: Where does it get the power from?&lt;br /&gt;The GPS does not require a lot of power but still, an external battery might make sense. Optimum obviously would be to have the option for both, camera battery or GPS own battery.&lt;br /&gt;&lt;br /&gt;Question 2: What happens if the camera is turned off?&lt;br /&gt;Most solutions keep running! No matter if it is a bluetooth solution or a GPS connected directly to it! The reason this is done that way is so you do not have to wait for multiple seconds until the GPS has a satellite fix, it is running non-stop. The downside is, you forget to turn it off - does it have a switch even??? - and a few days later your camera battery is dead. I don't like that at all. That is one of the reasons why I did not go for the blue2can but the www.foolography.com one, this one does switch off if you turn the camera off. And actually, keeping the GPS running does not make sense anyway. If you turn off the GPS it keeps the latest satellite data in memory and if it is turned on again shortly after, it takes just a few seconds to get a fix - not minutes.&lt;br /&gt;&lt;br /&gt;Question 3: Bluetooth or direct GPS?&lt;br /&gt;The bluetooth solution is times smaller, does not have any cables and can remain attached all the time. The power consumption is marginal.&lt;br /&gt;The GPS receiver can be any standard one, if you want a new one no problem, if you want a GPS mouse that supports logging as well - sure, why not. You just have to pair it again. With the bluetooth solution obviously the GPS has its own battery and its own ON/OFF switch. What I have chosen is a GPS mouse that goes into a standby mode if it is not moved for 10 minutes. So I turn off the camera, turn it on again a few minutes later to take another picture - the GPS data I get immediately as the GPS receiver was never turned off. Back home I just put the camera and the GPS into its storage box, 10 minutes later the GPS shuts itself down automatically. Very neat.&lt;br /&gt;The major advantage of the direct GPS is you can use one that has a built in compass and store this information as well in the EXIF data of the pictures.&lt;br /&gt;&lt;br /&gt;Question 4: What if there is no GPS reception while taking a picture?&lt;br /&gt;Imagine you walk into a house and take a few pictures there. No GPS signal shall be available here. You will see that GPS icon in the camera flashing. The alternative would be the GPS device keeps sending the last known position. Don't know what's better in such a case. Personally, if GPS information is important I check if the camera has data. And if it is not important, I do not want wrong or old data. On the other hand....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-8309217450663003619?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/8309217450663003619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=8309217450663003619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/8309217450663003619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/8309217450663003619'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/gps-on-nikon-things-to-watchout-for.html' title='GPS on Nikon - things to watchout for'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-2471130222287095668</id><published>2008-09-27T03:08:00.000-07:00</published><updated>2008-09-27T04:46:55.402-07:00</updated><title type='text'>Motor Tripod - Future Enhancements</title><content type='html'>Grab the GPS signal, convert it to 5V level and send it to the Nikon Camera's 10 Pin plug. &lt;a href="http://www.k-i-s.net/article.php?article=20"&gt;http://www.k-i-s.net/article.php?article=20&lt;/a&gt; With that, whenever a picture is taken, the GPS position is part of the EXIF data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let the microcontroller release the Camera Shutter. This is a functionality of above 10pin plug and would allow taking pictures in intervals, e.g. every 20 seconds. Or a a button is implemented on the remote XBee so you can operate the shutter from remote.&lt;br /&gt;&lt;br /&gt;Another otpion would be to use that tripod for Gigapixel images. The you point the camera into one direction, press start and then the camera takes one picture, moves the head by a few degrees, takes another picture, etc and at the end all pictured are merged into one image with extreme high resolution. &lt;a href="http://www.tawbaware.com/maxlyons/gigapixel.htm"&gt;http://www.tawbaware.com/maxlyons/gigapixel.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another option would be to remove the GPS tracking function and rather remote control the tripod from the computer. The hardware for this is simple, the droids board has an optional USB connector instead of the XBee module. Or we use an USB-to-XBee adapter available from that company as well. You would send some serial commands to the board, the software parses those commands and moves the camera head accordingly. No big challange, just the parser code has to be modified. And then via Nikons Camera Control software you could view the life image on the computer. There seems to be some open libraries (&lt;a href="http://www.gphoto.org/"&gt;http://www.gphoto.org/&lt;/a&gt;) as well to build an integrated solution. Or you simply use a webcam.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Apart from these enhancements there is one particular issue. The microcontroller does not know the servo's initial position. So all it can do is setting the position to central at the beginning at that results in one very quick movement. As the servos are very strong, that does not do the entire construction very good, not to mention the force on the camera. The servos do support programming and with that you can define speed or read the current servo position. And that would be all that is needed. Implementing the protocol would take a while so it will not be possible for me. Right now, I turn on the tripod, let it move to the initial position and then put the camera onto it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next steps:&lt;br /&gt;&lt;br /&gt;Check with a scope the servo speed implementation works flawlessly. It is not perfect yet as you can see in the video.&lt;br /&gt;&lt;br /&gt;See what needs to be done to take the GPS signal and send it to the camera.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-2471130222287095668?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/2471130222287095668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=2471130222287095668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2471130222287095668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/2471130222287095668'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/motor-tripod-future-enhancements.html' title='Motor Tripod - Future Enhancements'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4321424032531657785</id><published>2008-09-25T12:15:00.001-07:00</published><updated>2008-09-25T12:19:16.064-07:00</updated><title type='text'>main.c file</title><content type='html'>&lt;blockquote&gt;#include&amp;nbsp;&amp;lt;p18cxxx.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;delays.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;timers.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;usart.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;string.h&amp;gt; &lt;br /&gt;#include&amp;nbsp;&amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;math.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;adc.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;pwm.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;&amp;lt;i2c.h&amp;gt;&lt;br /&gt;#include&amp;nbsp;"Tracker.h"&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;config&amp;nbsp;fuse&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;OSC  =&amp;nbsp;HSPLL&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;WDT  =&amp;nbsp;OFF&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;PWRT  =&amp;nbsp;ON&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;LVP  =&amp;nbsp;OFF&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;BOREN =&amp;nbsp;ON&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;BORV  =&amp;nbsp;1&lt;br /&gt;#pragma&amp;nbsp;config&amp;nbsp;XINST =&amp;nbsp;OFF&lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;pi&amp;nbsp;3.14159265359&lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;LC PORTAbits.RA4    //&amp;nbsp;Led&amp;nbsp;com&lt;br /&gt;&lt;br /&gt;#define&amp;nbsp;HEIGHT_MODE_VARIABLE&amp;nbsp;0&lt;br /&gt;#define&amp;nbsp;HEIGHT_MODE_FIX&amp;nbsp;1&lt;br /&gt;&lt;br /&gt;int&amp;nbsp;PWM1,PWM2;&lt;br /&gt;int&amp;nbsp;S1,S2;&lt;br /&gt;long&amp;nbsp;S1_zero,&amp;nbsp;S2_zero,&amp;nbsp;counter,&amp;nbsp;S1_offset,&amp;nbsp;S2_offset,&amp;nbsp;S1_old,&amp;nbsp;S2_old;&lt;br /&gt;unsigned&amp;nbsp;int&amp;nbsp;last_pos_counter,&amp;nbsp;pos_counter;&lt;br /&gt;char&amp;nbsp;str[6],TXcount,valid_row,i;&lt;br /&gt;char&amp;nbsp;strcom[80];&lt;br /&gt;char&amp;nbsp;height_mode,&amp;nbsp;manual_coords;&lt;br /&gt;&lt;br /&gt;long&amp;nbsp;longitude_d,&amp;nbsp;longitude_m,&amp;nbsp;latitude_d,&amp;nbsp;latitude_m,&amp;nbsp;h;&lt;br /&gt;long&amp;nbsp;longitude_dc,&amp;nbsp;longitude_mc,&amp;nbsp;latitude_dc,&amp;nbsp;latitude_mc,&amp;nbsp;hc;&lt;br /&gt;long&amp;nbsp;dx,&amp;nbsp;dy,&amp;nbsp;dz,&amp;nbsp;cos100_longitude,&amp;nbsp;w,&amp;nbsp;w_zero,&amp;nbsp;v,&amp;nbsp;v_zero,&amp;nbsp;dw;&lt;br /&gt;char&amp;nbsp;key_pressed,&amp;nbsp;last_key_pressed;&lt;br /&gt;char&amp;nbsp;buf[20];&lt;br /&gt;char&amp;nbsp;state,&amp;nbsp;sat_in_view0,&amp;nbsp;sat_in_view1,&amp;nbsp;ind_quality;&lt;br /&gt;unsigned&amp;nbsp;char&amp;nbsp;checksum;&lt;br /&gt;char&amp;nbsp;ignore_for_checksum;&lt;br /&gt;&lt;br /&gt;#pragma&amp;nbsp;code&amp;nbsp;high_vector=0x08&lt;br /&gt;void&amp;nbsp;interrupt_at_high_vector(void)&lt;br /&gt;{&lt;br /&gt; _asm&amp;nbsp;GOTO&amp;nbsp;ISRgest&amp;nbsp;_endasm&lt;br /&gt;}&lt;br /&gt;#pragma&amp;nbsp;code&lt;br /&gt;#pragma&amp;nbsp;interrupt&amp;nbsp;ISRgest&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;main()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;LATA&amp;nbsp;=&amp;nbsp;0x00;&lt;br /&gt;LATB&amp;nbsp;=&amp;nbsp;0x00;&lt;br /&gt;LATC&amp;nbsp;=&amp;nbsp;0x00;  &lt;br /&gt;&lt;br /&gt;TRISA&amp;nbsp;=&amp;nbsp;0b11101111;      //&amp;nbsp;all&amp;nbsp;input,&amp;nbsp;RA4&amp;nbsp;GPIO  &lt;br /&gt;TRISB&amp;nbsp;=&amp;nbsp;0b11111100;&amp;nbsp;&amp;nbsp;     //&amp;nbsp;6&amp;nbsp;GPIO&amp;nbsp;(RB7-RB2),&amp;nbsp;2&amp;nbsp;Servo&amp;nbsp;(RB0&amp;nbsp;&amp;&amp;nbsp;RB1)&lt;br /&gt;TRISC&amp;nbsp;=&amp;nbsp;0b11011000;      //&amp;nbsp;I2C,&amp;nbsp;Serial,&amp;nbsp;PWM&lt;br /&gt;&lt;br /&gt;ADCON1&amp;nbsp;=&amp;nbsp;0b00001111;  //&amp;nbsp;ADC&amp;nbsp;off&lt;br /&gt;ADCON2&amp;nbsp;=&amp;nbsp;0b10110010;  //&amp;nbsp;16&amp;nbsp;TAD,&amp;nbsp;Fosc/32&lt;br /&gt;ADCON0&amp;nbsp;=&amp;nbsp;0x00;    //&amp;nbsp;ADC&amp;nbsp;OFF&lt;br /&gt;&lt;br /&gt;flashLED(5);&lt;br /&gt;&lt;br /&gt;BAUDCONbits.BRG16&amp;nbsp;=&amp;nbsp;1;      //&amp;nbsp;baud&amp;nbsp;rate&amp;nbsp;generator&amp;nbsp;a&amp;nbsp;16&amp;nbsp;bit&lt;br /&gt;OpenUSART&amp;nbsp;(USART_TX_INT_OFF&amp;nbsp;&amp;  &lt;br /&gt;   USART_RX_INT_ON&amp;nbsp;&amp;          &amp;nbsp;&amp;nbsp;&lt;br /&gt;   USART_ASYNCH_MODE&amp;nbsp;&amp;&lt;br /&gt;   USART_EIGHT_BIT&amp;nbsp;&amp;&lt;br /&gt;   USART_CONT_RX&amp;nbsp;&amp;&lt;br /&gt;   USART_BRGH_HIGH,&amp;nbsp;1041); &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;Timer&lt;br /&gt;OpenTimer0(&amp;nbsp;TIMER_INT_OFF&amp;nbsp;&amp;&amp;nbsp;T0_16BIT&amp;nbsp;&amp;&amp;nbsp;T0_SOURCE_INT&amp;nbsp;&amp;&amp;nbsp;T0_PS_1_1);  //&amp;nbsp;servo&amp;nbsp;frame&lt;br /&gt;OpenTimer1(TIMER_INT_ON&amp;nbsp;&amp;&amp;nbsp;T1_PS_1_1&amp;nbsp;&amp;&amp;nbsp;T1_SOURCE_INT&amp;nbsp;&amp;&amp;nbsp;T1_OSC1EN_OFF); //&amp;nbsp;Servo&amp;nbsp;pulse&amp;nbsp;1&lt;br /&gt;OpenTimer3(TIMER_INT_ON&amp;nbsp;&amp;&amp;nbsp;T3_PS_1_1&amp;nbsp;&amp;&amp;nbsp;T3_SOURCE_INT&amp;nbsp;&amp;&amp;nbsp;T3_OSC1EN_OFF&amp;nbsp;); //&amp;nbsp;Servo&amp;nbsp;Pulse&amp;nbsp;2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//I2C&lt;br /&gt;OpenI2C(MASTER,&amp;nbsp;SLEW_OFF); //&amp;nbsp;Activate&amp;nbsp;bus&amp;nbsp;I2C,&amp;nbsp;Master&amp;nbsp;mode&amp;nbsp;100&amp;nbsp;kbits&lt;br /&gt;SSPADD&amp;nbsp;=0x63;&amp;nbsp;    //100kHz&amp;nbsp;clock(63H)&amp;nbsp;@40MHz&amp;nbsp;(default)&lt;br /&gt;&lt;br /&gt;T0CONbits.TMR0ON&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;T1CONbits.TMR1ON&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;T3CONbits.TMR3ON&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&lt;br /&gt;TMR3H=TMR3L=0;&lt;br /&gt;TMR1H=TMR1L=0;&amp;nbsp;&lt;br /&gt;TMR0H&amp;nbsp;=&amp;nbsp;0x3C;&amp;nbsp;//&amp;nbsp;20&amp;nbsp;ms&lt;br /&gt;TMR0L&amp;nbsp;=&amp;nbsp;0xB0;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;S1=S2=1500;&lt;br /&gt;S1_offset=S2_offset=0;&lt;br /&gt;S1_old=S2_old=1500;&lt;br /&gt;&lt;br /&gt;last_pos_counter=0;&lt;br /&gt;pos_counter=0;&lt;br /&gt;last_key_pressed=0;&lt;br /&gt;&lt;br /&gt;valid_row&amp;nbsp;=&amp;nbsp;-2;&lt;br /&gt;TXcount&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;i=0;&lt;br /&gt;height_mode&amp;nbsp;=&amp;nbsp;HEIGHT_MODE_VARIABLE;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;Enable&amp;nbsp;interrupt&amp;nbsp;priority&amp;nbsp;*/&lt;br /&gt;RCONbits.IPEN&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;Make&amp;nbsp;receive&amp;nbsp;interrupt&amp;nbsp;high&amp;nbsp;priority&amp;nbsp;*/&lt;br /&gt;IPR1bits.RCIP&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;interrupt&lt;br /&gt;INTCON&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;INTCONbits.GIE&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;INTCONbits.PEIE&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;LCDClearScreen();&lt;br /&gt;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Starting....");&lt;br /&gt;&lt;br /&gt;Servo();&lt;br /&gt;&lt;br /&gt;state=0;&lt;br /&gt;manual_coords&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;wait&amp;nbsp;until&amp;nbsp;GPS&amp;nbsp;has&amp;nbsp;acquired&amp;nbsp;the&amp;nbsp;current&amp;nbsp;position&amp;nbsp;and&amp;nbsp;then&amp;nbsp;turn&amp;nbsp;on&amp;nbsp;the&amp;nbsp;LED.&amp;nbsp;As&amp;nbsp;long&amp;nbsp;as&amp;nbsp;we&amp;nbsp;are&amp;nbsp;in&amp;nbsp;this&amp;nbsp;mode&amp;nbsp;and&amp;nbsp;a&amp;nbsp;key&amp;nbsp;was&amp;nbsp;pressed&lt;br /&gt;//&amp;nbsp;we&amp;nbsp;treat&amp;nbsp;that&amp;nbsp;as&amp;nbsp;signal&amp;nbsp;to&amp;nbsp;store&amp;nbsp;the&amp;nbsp;current&amp;nbsp;GPS&amp;nbsp;position&amp;nbsp;and&amp;nbsp;flash&amp;nbsp;the&amp;nbsp;LED&amp;nbsp;10&amp;nbsp;times&amp;nbsp;as&amp;nbsp;visual&amp;nbsp;indicator.&lt;br /&gt;//&amp;nbsp;LED&amp;nbsp;off&amp;nbsp;means&amp;nbsp;GPS&amp;nbsp;is&amp;nbsp;not&amp;nbsp;ready&amp;nbsp;yet&lt;br /&gt;//&amp;nbsp;LED&amp;nbsp;on&amp;nbsp;means&amp;nbsp;GPS&amp;nbsp;has&amp;nbsp;a&amp;nbsp;trusted&amp;nbsp;position&lt;br /&gt;while(i&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(valid_row&amp;nbsp;==&amp;nbsp;-2)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"No&amp;nbsp;Serial&amp;nbsp;Data&amp;nbsp;yet");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"program&amp;nbsp;XBee&amp;nbsp;1:&amp;nbsp;1");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"program&amp;nbsp;XBee&amp;nbsp;2:&amp;nbsp;2");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;-1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((valid_row&amp;nbsp;!=&amp;nbsp;-1)&amp;nbsp;&amp;&amp;&amp;nbsp;(state&amp;nbsp;==&amp;nbsp;0))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Serial&amp;nbsp;Data&amp;nbsp;received");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((pos_counter&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(ind_quality&amp;nbsp;==&amp;nbsp;'0')&amp;nbsp;&amp;&amp;&amp;nbsp;(state&amp;nbsp;!=&amp;nbsp;2))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"GPS&amp;nbsp;Sentence&amp;nbsp;found,&amp;nbsp;no&amp;nbsp;fix&amp;nbsp;yet");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state=2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((pos_counter&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(ind_quality&amp;nbsp;!=&amp;nbsp;'0')&amp;nbsp;&amp;&amp;&amp;nbsp;(state&amp;nbsp;&amp;lt;&amp;nbsp;3))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Press&amp;nbsp;5&amp;nbsp;to&amp;nbsp;lock&amp;nbsp;pos");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Satellites:&amp;nbsp;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state&amp;nbsp;=&amp;nbsp;3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;key_pressed&amp;nbsp;=&amp;nbsp;LCDKeyboardSingleChar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'#')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EnterCoords();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;state&amp;nbsp;=&amp;nbsp;2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(valid_row&amp;nbsp;==&amp;nbsp;-1)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'1')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProgramXBee((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"4E3A",&amp;nbsp;(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"4E3B");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'2')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProgramXBee((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"4E3B",&amp;nbsp;(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"4E3A");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(last_pos_counter&amp;nbsp;!=&amp;nbsp;pos_counter&amp;nbsp;||&amp;nbsp;manual_coords)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(manual_coords&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;GPSParse();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;manual_coords&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('&amp;nbsp;');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('&amp;nbsp;');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(sat_in_view0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(sat_in_view1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last_pos_counter&amp;nbsp;=&amp;nbsp;pos_counter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(ind_quality&amp;nbsp;!=&amp;nbsp;'0')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'5')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;i=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;latitude_d&amp;nbsp;=&amp;nbsp;latitude_dc;&lt;br /&gt;latitude_m&amp;nbsp;=&amp;nbsp;latitude_mc;&lt;br /&gt;longitude_d&amp;nbsp;=&amp;nbsp;longitude_dc;&lt;br /&gt;longitude_m&amp;nbsp;=&amp;nbsp;longitude_mc;&lt;br /&gt;h&amp;nbsp;=&amp;nbsp;hc;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LCDClearScreen();&lt;br /&gt;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Waiting&amp;nbsp;for&amp;nbsp;remote&amp;nbsp;&amp;nbsp;position...");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cos100_longitude&amp;nbsp;=&amp;nbsp;(long)(cos((((double)latitude_d)&amp;nbsp;+&amp;nbsp;((double)latitude_m)/60000.00)&amp;nbsp;*&amp;nbsp;3.14159265f&amp;nbsp;/&amp;nbsp;180.00f)*100.00f);&lt;br /&gt;&lt;br /&gt;S1_zero&amp;nbsp;=&amp;nbsp;1500;&lt;br /&gt;S2_zero&amp;nbsp;=&amp;nbsp;1500;&lt;br /&gt;w&amp;nbsp;=&amp;nbsp;9999;&lt;br /&gt;v&amp;nbsp;=&amp;nbsp;9999;&lt;br /&gt;w_zero&amp;nbsp;=&amp;nbsp;w;&lt;br /&gt;v_zero&amp;nbsp;=&amp;nbsp;v;&lt;br /&gt;counter&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;key_pressed=0;&lt;br /&gt;&lt;br /&gt;T0CONbits.TMR0ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;T1CONbits.TMR1ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;T3CONbits.TMR3ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//&amp;nbsp;No&amp;nbsp;we&amp;nbsp;are&amp;nbsp;in&amp;nbsp;tracking&amp;nbsp;and&amp;nbsp;offset&amp;nbsp;mode.&amp;nbsp;You&amp;nbsp;can&amp;nbsp;press&amp;nbsp;the&amp;nbsp;keys&amp;nbsp;and&amp;nbsp;move&amp;nbsp;the&amp;nbsp;servos&amp;nbsp;freely.&lt;br /&gt;//&amp;nbsp;The&amp;nbsp;first&amp;nbsp;time&amp;nbsp;the&amp;nbsp;GPS&amp;nbsp;position&amp;nbsp;is&amp;nbsp;considered&amp;nbsp;trusted&amp;nbsp;and&amp;nbsp;more&amp;nbsp;than&amp;nbsp;10&amp;nbsp;meters&amp;nbsp;away,&amp;nbsp;the&amp;nbsp;servos&lt;br /&gt;//&amp;nbsp;start&amp;nbsp;moving&amp;nbsp;automatically.&amp;nbsp;If&amp;nbsp;it&amp;nbsp;is&amp;nbsp;the&amp;nbsp;first&amp;nbsp;time&amp;nbsp;the&amp;nbsp;remote&amp;nbsp;location&amp;nbsp;is&amp;nbsp;valid,&amp;nbsp;we&amp;nbsp;initialize&lt;br /&gt;//&amp;nbsp;the&amp;nbsp;angle&amp;nbsp;offset&amp;nbsp;assuming&amp;nbsp;the&amp;nbsp;current&amp;nbsp;servo&amp;nbsp;position&amp;nbsp;already&amp;nbsp;points&amp;nbsp;to&amp;nbsp;the&amp;nbsp;remote&amp;nbsp;position.&lt;br /&gt;//&amp;nbsp;While&amp;nbsp;the&amp;nbsp;servos&amp;nbsp;try&amp;nbsp;to&amp;nbsp;follow&amp;nbsp;the&amp;nbsp;GPS&amp;nbsp;position&amp;nbsp;you&amp;nbsp;can&amp;nbsp;still&amp;nbsp;press&amp;nbsp;the&amp;nbsp;buttons&amp;nbsp;to&amp;nbsp;move&amp;nbsp;the&amp;nbsp;head&amp;nbsp;manually.&lt;br /&gt;while(1)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((pos_counter&amp;nbsp;!=&amp;nbsp;last_pos_counter)&amp;nbsp;||&amp;nbsp;manual_coords)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(manual_coords&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;GPSParse();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;manual_coords&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last_pos_counter&amp;nbsp;=&amp;nbsp;pos_counter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(ind_quality&amp;nbsp;!=&amp;nbsp;'0')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx&amp;nbsp;=&amp;nbsp;getDeltaLongitude();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dy&amp;nbsp;=&amp;nbsp;getDeltaLatitude();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(height_mode&amp;nbsp;==&amp;nbsp;HEIGHT_MODE_VARIABLE)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dz&amp;nbsp;=&amp;nbsp;hc&amp;nbsp;-&amp;nbsp;h;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dz&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf&amp;nbsp;(buf,&amp;nbsp;"dx=%ld&amp;nbsp;&amp;nbsp;&amp;nbsp;",&amp;nbsp;dx/10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf&amp;nbsp;(buf,&amp;nbsp;"dy=%ld",&amp;nbsp;dy/10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf&amp;nbsp;(buf,&amp;nbsp;"dz=%ld&amp;nbsp;&amp;nbsp;&amp;nbsp;Sats:&amp;nbsp;",&amp;nbsp;dz/10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(sat_in_view0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(sat_in_view1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sprintf&amp;nbsp;(buf,&amp;nbsp;"counter=%d",&amp;nbsp;pos_counter);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((dx*dx&amp;nbsp;+&amp;nbsp;dy*dy)&amp;nbsp;&amp;gt;&amp;nbsp;10000)&amp;nbsp;{&amp;nbsp;//&amp;nbsp;the&amp;nbsp;remote&amp;nbsp;position&amp;nbsp;is&amp;nbsp;more&amp;nbsp;than&amp;nbsp;10m&amp;nbsp;away,&amp;nbsp;we&amp;nbsp;start&amp;nbsp;updating&amp;nbsp;the&amp;nbsp;servo&amp;nbsp;position&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w&amp;nbsp;=&amp;nbsp;approx_atan2(dy,&amp;nbsp;dx);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v&amp;nbsp;=&amp;nbsp;approx_atan2(dz,&amp;nbsp;isqrt(dy*dy&amp;nbsp;+&amp;nbsp;dx&amp;nbsp;*&amp;nbsp;dx));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(w_zero&amp;nbsp;==&amp;nbsp;9999)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w_zero&amp;nbsp;=&amp;nbsp;w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v_zero&amp;nbsp;=&amp;nbsp;v;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_old&amp;nbsp;=&amp;nbsp;S1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_old&amp;nbsp;=&amp;nbsp;S2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dw&amp;nbsp;=&amp;nbsp;w_zero-w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(dw&amp;nbsp;&amp;gt;&amp;nbsp;18000)&amp;nbsp;dw-=36000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(dw&amp;nbsp;&amp;lt;&amp;nbsp;-18000)&amp;nbsp;dw+=36000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_offset=(long)((dw*86)/1000);&amp;nbsp;//&amp;nbsp;we&amp;nbsp;have&amp;nbsp;degree*100,&amp;nbsp;one&amp;nbsp;degree&amp;nbsp;is&amp;nbsp;about&amp;nbsp;7us&amp;nbsp;servo&amp;nbsp;impuls&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_offset=(long)(((v-v_zero)*86)/1000);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Tracking...");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;instead&amp;nbsp;of&amp;nbsp;setting&amp;nbsp;the&amp;nbsp;new&amp;nbsp;servo&amp;nbsp;position,&amp;nbsp;we&amp;nbsp;let&amp;nbsp;it&amp;nbsp;move&amp;nbsp;slowly&amp;nbsp;towards&amp;nbsp;the&amp;nbsp;S1&amp;nbsp;=&amp;nbsp;S1_zero&amp;nbsp;+&amp;nbsp;S1_offset&amp;nbsp;position&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(INTCONbits.TMR0IF)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T0CONbits.TMR0ON&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TMR0H&amp;nbsp;=&amp;nbsp;0x3C;&amp;nbsp;//&amp;nbsp;5&amp;nbsp;ms&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TMR0L&amp;nbsp;=&amp;nbsp;0xB0;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INTCONbits.TMR0IF&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T0CONbits.TMR0ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key_pressed&amp;nbsp;=&amp;nbsp;LCDKeyboard();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'6')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_zero++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;200;&amp;nbsp;//&amp;nbsp;to&amp;nbsp;make&amp;nbsp;sure&amp;nbsp;we&amp;nbsp;have&amp;nbsp;an&amp;nbsp;immediate&amp;nbsp;movement&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'4')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_zero--;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'2')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_zero++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'8')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_zero--;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'5')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;reset&amp;nbsp;pos&amp;nbsp;to&amp;nbsp;center&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_zero=1500;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_zero=1500;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;w_zero&amp;nbsp;=&amp;nbsp;w;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;v_zero&amp;nbsp;=&amp;nbsp;v;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_offset&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_offset&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;200;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'0'&amp;nbsp;&amp;&amp;&amp;nbsp;last_key_pressed&amp;nbsp;!=&amp;nbsp;'0')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;switch&amp;nbsp;height&amp;nbsp;mode&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(height_mode&amp;nbsp;==&amp;nbsp;HEIGHT_MODE_VARIABLE)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height_mode&amp;nbsp;=&amp;nbsp;HEIGHT_MODE_FIX;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Height&amp;nbsp;is&amp;nbsp;constant&amp;nbsp;0");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;height_mode&amp;nbsp;=&amp;nbsp;HEIGHT_MODE_VARIABLE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Height&amp;nbsp;set&amp;nbsp;variable");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;flashLED(10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(key_pressed&amp;nbsp;==&amp;nbsp;'#')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EnterCoords();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1_zero&amp;nbsp;&amp;lt;&amp;nbsp;900)&amp;nbsp;S1_zero&amp;nbsp;=&amp;nbsp;900;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1_zero&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S1_zero&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2_zero&amp;nbsp;&amp;lt;&amp;nbsp;1250)&amp;nbsp;S2_zero&amp;nbsp;=&amp;nbsp;1250;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2_zero&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S2_zero&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last_key_pressed&amp;nbsp;=&amp;nbsp;key_pressed;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Timer0&amp;nbsp;fires&amp;nbsp;every&amp;nbsp;0.005s,&amp;nbsp;every&amp;nbsp;one&amp;nbsp;sec&amp;nbsp;we&amp;nbsp;will&amp;nbsp;know&amp;nbsp;the&amp;nbsp;new&amp;nbsp;GPS&amp;nbsp;position.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Therefore&amp;nbsp;the&amp;nbsp;servo&amp;nbsp;should&amp;nbsp;make&amp;nbsp;the&amp;nbsp;enitre&amp;nbsp;movement&amp;nbsp;in&amp;nbsp;200&amp;nbsp;steps&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1&amp;nbsp;=&amp;nbsp;(int)(S1_old&amp;nbsp;-&amp;nbsp;(((S1_old&amp;nbsp;-&amp;nbsp;(S1_zero&amp;nbsp;+&amp;nbsp;S1_offset))*counter)/200));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1&amp;nbsp;&amp;lt;&amp;nbsp;900)&amp;nbsp;S1&amp;nbsp;=&amp;nbsp;900;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S1&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2&amp;nbsp;=&amp;nbsp;(int)(S2_old&amp;nbsp;-&amp;nbsp;(((S2_old&amp;nbsp;-&amp;nbsp;(S2_zero&amp;nbsp;-&amp;nbsp;S2_offset))*counter)/200));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2&amp;nbsp;&amp;lt;&amp;nbsp;1200)&amp;nbsp;S2&amp;nbsp;=&amp;nbsp;1200;&amp;nbsp;//&amp;nbsp;the&amp;nbsp;z-Axis&amp;nbsp;can&amp;nbsp;move&amp;nbsp;just&amp;nbsp;little&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S2&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((PIR1bits.TMR1IF&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(PIR2bits.TMR3IF&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;((counter&amp;nbsp;%&amp;nbsp;4)&amp;nbsp;==&amp;nbsp;0))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Servo();   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(counter&amp;nbsp;&amp;gt;&amp;nbsp;200)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;counter&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S1_old&amp;nbsp;=&amp;nbsp;S1_zero&amp;nbsp;+&amp;nbsp;S1_offset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S2_old&amp;nbsp;=&amp;nbsp;S2_zero&amp;nbsp;-&amp;nbsp;S2_offset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1_old&amp;nbsp;&amp;lt;&amp;nbsp;900)&amp;nbsp;S1_old&amp;nbsp;=&amp;nbsp;900;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S1_old&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S1_old&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2_old&amp;nbsp;&amp;lt;&amp;nbsp;1250)&amp;nbsp;S2_old&amp;nbsp;=&amp;nbsp;1250;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(S2_old&amp;nbsp;&amp;gt;&amp;nbsp;2100)&amp;nbsp;S2_old&amp;nbsp;=&amp;nbsp;2100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&amp;nbsp;//&amp;nbsp;while&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;long&amp;nbsp;approx_atan2(long&amp;nbsp;dist_y,&amp;nbsp;long&amp;nbsp;dist_x)&amp;nbsp;{&amp;nbsp;//&amp;nbsp;returns&amp;nbsp;degree&amp;nbsp;times&amp;nbsp;100,&amp;nbsp;so&amp;nbsp;the&amp;nbsp;number&amp;nbsp;6234&amp;nbsp;means&amp;nbsp;62.34°&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Watchout,&amp;nbsp;it&amp;nbsp;is&amp;nbsp;rotated&amp;nbsp;so&amp;nbsp;that&amp;nbsp;north=0°,&amp;nbsp;east=90°,&amp;nbsp;west=-90°&lt;br /&gt;&amp;nbsp;&amp;nbsp;long&amp;nbsp;rad100;&lt;br /&gt;&amp;nbsp;&amp;nbsp;long&amp;nbsp;offset;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(dist_x&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(dist_y&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;return&amp;nbsp;18000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rad100&amp;nbsp;=&amp;nbsp;dist_y*100/dist_x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rad100&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;rad100&amp;nbsp;=&amp;nbsp;-rad100;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(rad100&amp;nbsp;&amp;gt;&amp;nbsp;100)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;atan&amp;nbsp;=&amp;nbsp;(PI()/2-r/(0,28+r*r))/pi*180&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;offset&amp;nbsp;=&amp;nbsp;((5700*rad100/(28+(rad100*rad100/100))))/100;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;offset&amp;nbsp;=&amp;nbsp;((5700*rad100/(28+(rad100*rad100/100))));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;offset&amp;nbsp;=&amp;nbsp;9000-((rad100*570000)/(10000+(28*rad100*rad100/100)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((dist_x&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(dist_y&amp;nbsp;&amp;gt;=&amp;nbsp;0))&amp;nbsp;return&amp;nbsp;offset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((dist_x&amp;nbsp;&amp;lt;&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(dist_y&amp;nbsp;&amp;gt;=&amp;nbsp;0))&amp;nbsp;return&amp;nbsp;-offset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((dist_x&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(dist_y&amp;nbsp;&amp;lt;&amp;nbsp;0))&amp;nbsp;return&amp;nbsp;18000-offset;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;return&amp;nbsp;offset-18000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;long&amp;nbsp;isqrt(long&amp;nbsp;x)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;long&amp;nbsp;&amp;nbsp;&amp;nbsp;squaredbit,&amp;nbsp;remainder,&amp;nbsp;root;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(x&amp;lt;1)&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Load&amp;nbsp;the&amp;nbsp;binary&amp;nbsp;constant&amp;nbsp;01&amp;nbsp;00&amp;nbsp;00&amp;nbsp;...&amp;nbsp;00,&amp;nbsp;where&amp;nbsp;the&amp;nbsp;number&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;of&amp;nbsp;zero&amp;nbsp;bits&amp;nbsp;to&amp;nbsp;the&amp;nbsp;right&amp;nbsp;of&amp;nbsp;the&amp;nbsp;single&amp;nbsp;one&amp;nbsp;bit&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;is&amp;nbsp;even,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;one&amp;nbsp;bit&amp;nbsp;is&amp;nbsp;as&amp;nbsp;far&amp;nbsp;left&amp;nbsp;as&amp;nbsp;is&amp;nbsp;consistant&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;with&amp;nbsp;that&amp;nbsp;condition.)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;squaredbit&amp;nbsp;&amp;nbsp;=&amp;nbsp;(long)&amp;nbsp;((((unsigned&amp;nbsp;long)&amp;nbsp;~0L)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;1)&amp;nbsp;&amp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~(((unsigned&amp;nbsp;long)&amp;nbsp;~0L)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;2));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;This&amp;nbsp;portable&amp;nbsp;load&amp;nbsp;replaces&amp;nbsp;the&amp;nbsp;loop&amp;nbsp;that&amp;nbsp;used&amp;nbsp;to&amp;nbsp;be&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;here,&amp;nbsp;and&amp;nbsp;was&amp;nbsp;donated&amp;nbsp;by&amp;nbsp;&amp;nbsp;legalize@xmission.com&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*&amp;nbsp;Form&amp;nbsp;bits&amp;nbsp;of&amp;nbsp;the&amp;nbsp;answer.&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;remainder&amp;nbsp;=&amp;nbsp;x;&amp;nbsp;&amp;nbsp;root&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(squaredbit&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(remainder&amp;nbsp;&amp;gt;=&amp;nbsp;(squaredbit&amp;nbsp;|&amp;nbsp;root))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;remainder&amp;nbsp;-=&amp;nbsp;(squaredbit&amp;nbsp;|&amp;nbsp;root);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root&amp;nbsp;&amp;gt;&amp;gt;=&amp;nbsp;1;&amp;nbsp;root&amp;nbsp;|=&amp;nbsp;squaredbit;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;root&amp;nbsp;&amp;gt;&amp;gt;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;squaredbit&amp;nbsp;&amp;gt;&amp;gt;=&amp;nbsp;2;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;root;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;flashLED(char&amp;nbsp;times)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(i=0;i&amp;lt;times;i++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LC=!LC;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayMilliSeconds(500);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;long&amp;nbsp;getDeltaLatitude(void)&amp;nbsp;{&amp;nbsp;//&amp;nbsp;returns&amp;nbsp;the&amp;nbsp;distance&amp;nbsp;in&amp;nbsp;0.1m&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;return&amp;nbsp;((latitude_m&amp;nbsp;-&amp;nbsp;atol(str_latitude_minute))*pi*&amp;nbsp;6378137/180/60000&amp;nbsp;+&amp;nbsp;(latitude_d&amp;nbsp;-&amp;nbsp;atol(str_latitude_degree))&amp;nbsp;*&amp;nbsp;pi&amp;nbsp;*&amp;nbsp;6378137&amp;nbsp;/&amp;nbsp;180)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;((latitude_m&amp;nbsp;-&amp;nbsp;latitude_mc)*186&amp;nbsp;+&amp;nbsp;(latitude_d&amp;nbsp;-&amp;nbsp;latitude_dc)&amp;nbsp;*&amp;nbsp;11131949)/100;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;long&amp;nbsp;getDeltaLongitude(void)&amp;nbsp;{&amp;nbsp;//&amp;nbsp;returns&amp;nbsp;the&amp;nbsp;distance&amp;nbsp;in&amp;nbsp;0.1m&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;return&amp;nbsp;((longitude_m&amp;nbsp;-&amp;nbsp;atol(str_longitude_minute))*pi*&amp;nbsp;dist/180/60000&amp;nbsp;+&amp;nbsp;(longitude_d&amp;nbsp;-&amp;nbsp;atol(str_longitude_degree))&amp;nbsp;*&amp;nbsp;pi&amp;nbsp;*&amp;nbsp;dist&amp;nbsp;/&amp;nbsp;180)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;((longitude_m&amp;nbsp;-&amp;nbsp;longitude_mc)*186&amp;nbsp;+&amp;nbsp;(longitude_d&amp;nbsp;-&amp;nbsp;longitude_dc)&amp;nbsp;*&amp;nbsp;11131949)&amp;nbsp;*&amp;nbsp;cos100_longitude&amp;nbsp;/&amp;nbsp;10000;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;Servo&amp;nbsp;(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;TMR1H&amp;nbsp;=&amp;nbsp;(65536&amp;nbsp;-&amp;nbsp;S1*10)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TMR1L&amp;nbsp;=&amp;nbsp;(65536&amp;nbsp;-&amp;nbsp;S1*10);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LATBbits.LATB0&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TMR3H&amp;nbsp;=&amp;nbsp;(65536&amp;nbsp;-&amp;nbsp;S2*10)&amp;nbsp;&amp;gt;&amp;gt;&amp;nbsp;8;&lt;br /&gt;&amp;nbsp;&amp;nbsp;TMR3L&amp;nbsp;=&amp;nbsp;(65536&amp;nbsp;-&amp;nbsp;S2*10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;LATBbits.LATB1&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;T1CONbits.TMR1ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;T3CONbits.TMR3ON&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;ISRgest(void)&amp;nbsp;{  //&amp;nbsp;I.S.R.&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;data;    //&amp;nbsp;buffer&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(PIR1bits.TMR1IF)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LATBbits.LATB0&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T1CONbits.TMR1ON&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIR1bits.TMR1IF&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(PIR2bits.TMR3IF)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LATBbits.LATB1&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;T3CONbits.TMR3ON&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIR2bits.TMR3IF&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(PIR1bits.RCIF)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data&amp;nbsp;=&amp;nbsp;RCREG;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(data&amp;nbsp;==&amp;nbsp;'$')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;checksum&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ignore_for_checksum&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(valid_row&amp;nbsp;==&amp;nbsp;1)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(TXcount&amp;nbsp;==&amp;nbsp;4)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((strcom[0]&amp;nbsp;!=&amp;nbsp;'G')&amp;nbsp;||&amp;nbsp;(strcom[1]&amp;nbsp;!=&amp;nbsp;'P')&amp;nbsp;||&amp;nbsp;(strcom[2]&amp;nbsp;!=&amp;nbsp;'G')&amp;nbsp;||&amp;nbsp;(strcom[3]&amp;nbsp;!=&amp;nbsp;'G')&amp;nbsp;||&amp;nbsp;(data&amp;nbsp;!=&amp;nbsp;'A'))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcom[TXcount]&amp;nbsp;=&amp;nbsp;data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;checksum&amp;nbsp;^=&amp;nbsp;data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((data&amp;nbsp;==&amp;nbsp;'\n')&amp;nbsp;||&amp;nbsp;(data&amp;nbsp;==&amp;nbsp;'\r'))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((((strcom[TXcount-2]&amp;nbsp;-&amp;nbsp;'0')&amp;nbsp;&amp;lt;&amp;lt;&amp;nbsp;4)&amp;nbsp;|&amp;nbsp;(strcom[TXcount-1]&amp;nbsp;-&amp;nbsp;'0'))&amp;nbsp;==&amp;nbsp;checksum)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos_counter++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(data&amp;nbsp;==&amp;nbsp;'*')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ignore_for_checksum&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcom[TXcount]&amp;nbsp;=&amp;nbsp;data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(ignore_for_checksum&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;checksum&amp;nbsp;^=&amp;nbsp;data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;TXcount&amp;nbsp;&amp;gt;&amp;nbsp;79&amp;nbsp;)&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;&amp;nbsp;//&amp;nbsp;this&amp;nbsp;is&amp;nbsp;used&amp;nbsp;to&amp;nbsp;capture&amp;nbsp;input&amp;nbsp;received,&amp;nbsp;e.g.&amp;nbsp;during&amp;nbsp;XBee&amp;nbsp;programming&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strcom[TXcount]&amp;nbsp;=&amp;nbsp;data;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(&amp;nbsp;TXcount&amp;nbsp;&amp;gt;&amp;nbsp;79&amp;nbsp;)&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;79;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; /*&amp;nbsp;Clear&amp;nbsp;the&amp;nbsp;interrupt&amp;nbsp;flag&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PIR1bits.RCIF&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;I2CW(char&amp;nbsp;ADDS,&amp;nbsp;char&amp;nbsp;N1,&amp;nbsp;char&amp;nbsp;d1,&amp;nbsp;char&amp;nbsp;d2,&amp;nbsp;char&amp;nbsp;d3)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;//&amp;nbsp;N1..... Bytes&amp;nbsp;to&amp;nbsp;send&lt;br /&gt;&amp;nbsp;//&amp;nbsp;ADDS... I2C&amp;nbsp;Address&lt;br /&gt;&amp;nbsp;//&amp;nbsp;d1..... High&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;//&amp;nbsp;d2..... Low&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;//&amp;nbsp;d3..... ???&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(N1&amp;nbsp;==&amp;nbsp;1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEByteWrite(ADDS,&amp;nbsp;0,d2);  //&amp;nbsp;Write&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEAckPolling(ADDS);   //&amp;nbsp;attende&amp;nbsp;per&amp;nbsp;ACK&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;if&amp;nbsp;(N1&amp;nbsp;==&amp;nbsp;2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEByteWrite(ADDS,&amp;nbsp;d1,d2); //&amp;nbsp;Write&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEAckPolling(ADDS);   //&amp;nbsp;attende&amp;nbsp;per&amp;nbsp;ACK&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;if&amp;nbsp;(N1&amp;nbsp;==&amp;nbsp;3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEByteWrite(ADDS,d1,d2);  //&amp;nbsp;Write&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEAckPolling(ADDS);   //&amp;nbsp;attende&amp;nbsp;per&amp;nbsp;ACK&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEByteWrite(ADDS,(d1+1),d2); //&amp;nbsp;Write&amp;nbsp;byte&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;EEAckPolling(ADDS);   //&amp;nbsp;attende&amp;nbsp;per&amp;nbsp;ACK&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;LCDprint(char&amp;nbsp;*&amp;nbsp;string)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;char_pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(char_pos=0;&amp;nbsp;(string[char_pos]&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(char_pos&amp;nbsp;&amp;lt;&amp;nbsp;80);&amp;nbsp;char_pos++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I2CW(0xc6,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;string[char_pos],&amp;nbsp;0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;LCDprint2(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;string)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;char_pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(char_pos=0;&amp;nbsp;(string[char_pos]&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(char_pos&amp;nbsp;&amp;lt;&amp;nbsp;80);&amp;nbsp;char_pos++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;I2CW(0xc6,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;string[char_pos],&amp;nbsp;0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;LCDprintc(char&amp;nbsp;string)&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;I2CW(0xc6,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;string,&amp;nbsp;0);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;void&amp;nbsp;LCDClearScreen()&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;I2CW(0xc6,&amp;nbsp;1,&amp;nbsp;0,&amp;nbsp;12,&amp;nbsp;0);&amp;nbsp;//&amp;nbsp;clear&amp;nbsp;screen&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;char&amp;nbsp;LCDKeyboard()&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;let_b[16];&lt;br /&gt;&amp;nbsp;&amp;nbsp;EESequentialRead(0xC6,1,let_b,2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;EEAckPolling(0xC6);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b10000000)&amp;nbsp;return&amp;nbsp;'8';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b01000000)&amp;nbsp;return&amp;nbsp;'7';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00100000)&amp;nbsp;return&amp;nbsp;'6';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00010000)&amp;nbsp;return&amp;nbsp;'5';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00001000)&amp;nbsp;return&amp;nbsp;'4';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00000100)&amp;nbsp;return&amp;nbsp;'3';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00000010)&amp;nbsp;return&amp;nbsp;'2';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[0]&amp;nbsp;&amp;&amp;nbsp;0b00000001)&amp;nbsp;return&amp;nbsp;'1';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[1]&amp;nbsp;&amp;&amp;nbsp;0b00000001)&amp;nbsp;return&amp;nbsp;'9';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[1]&amp;nbsp;&amp;&amp;nbsp;0b00000100)&amp;nbsp;return&amp;nbsp;'0';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[1]&amp;nbsp;&amp;&amp;nbsp;0b00001000)&amp;nbsp;return&amp;nbsp;'#';&lt;br /&gt;//&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(let_b[1]&amp;nbsp;&amp;&amp;nbsp;0b00000010)&amp;nbsp;return&amp;nbsp;'*';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;char&amp;nbsp;LCDKeyboardSingleChar()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;key_pressed&amp;nbsp;=&amp;nbsp;LCDKeyboard();&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;((key_pressed&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;&amp;&amp;&amp;nbsp;(key_pressed&amp;nbsp;!=&amp;nbsp;last_key_pressed))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last_key_pressed&amp;nbsp;=&amp;nbsp;key_pressed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;key_pressed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;last_key_pressed&amp;nbsp;=&amp;nbsp;key_pressed;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;I2CR()&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;char&amp;nbsp;ADDS,N1,d1,d2,i;&lt;br /&gt;&amp;nbsp;unsigned&amp;nbsp;char&amp;nbsp;let_b[16];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;N1&amp;nbsp;=&amp;nbsp;strcom[3];&amp;nbsp; //&amp;nbsp;numero&amp;nbsp;byte&amp;nbsp;da&amp;nbsp;leggere&lt;br /&gt;&amp;nbsp;ADDS&amp;nbsp;=&amp;nbsp;strcom[2];&amp;nbsp; //&amp;nbsp;I2C&amp;nbsp;Address&lt;br /&gt;&amp;nbsp;d1&amp;nbsp;=&amp;nbsp;strcom[4]; //&amp;nbsp;option&lt;br /&gt;&lt;br /&gt;&amp;nbsp;EESequentialRead(ADDS,d1,let_b,N1);&lt;br /&gt;&amp;nbsp;EEAckPolling(ADDS);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;TXREG&amp;nbsp;=&amp;nbsp;'@';&lt;br /&gt;&amp;nbsp;while(!TXSTAbits.TRMT);&amp;nbsp;&lt;br /&gt;&amp;nbsp;TXREG&amp;nbsp;=&amp;nbsp;'I';&lt;br /&gt;&amp;nbsp;while(!TXSTAbits.TRMT);&amp;nbsp;&lt;br /&gt;&amp;nbsp;TXREG&amp;nbsp;=&amp;nbsp;ADDS;&lt;br /&gt;&amp;nbsp;while(!TXSTAbits.TRMT);&amp;nbsp;&lt;br /&gt;&lt;br /&gt;for&amp;nbsp;(i=0;i&amp;lt;N1;i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXREG&amp;nbsp;=&amp;nbsp;let_b[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(!TXSTAbits.TRMT);&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char&amp;nbsp;GPIO_read(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;return&amp;nbsp;PORTB;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;GPIO_write(char&amp;nbsp;v)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;LATB&amp;nbsp;=&amp;nbsp;v;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;EnterCoords()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;bufpos;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Lat:&amp;nbsp;");&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;LCDKeyboard();&lt;br /&gt;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(c&amp;nbsp;==&amp;nbsp;'#')&amp;nbsp;{&amp;nbsp;//&amp;nbsp;if&amp;nbsp;the&amp;nbsp;#&amp;nbsp;key&amp;nbsp;is&amp;nbsp;still&amp;nbsp;pressed,&amp;nbsp;wait&amp;nbsp;until&amp;nbsp;it&amp;nbsp;is&amp;nbsp;released&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayMilliSeconds(100);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;LCDKeyboard();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;pos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;while(c&amp;nbsp;!=&amp;nbsp;'*')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(c&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos++]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;1)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_dc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('&amp;nbsp;');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((pos&amp;nbsp;&amp;gt;=&amp;nbsp;2)&amp;nbsp;&amp;&amp;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;7))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos++]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;3)&amp;nbsp;LCDprintc('.');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;7)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_mc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;8)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(c&amp;nbsp;==&amp;nbsp;'2')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('N');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('S');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_dc&amp;nbsp;=&amp;nbsp;-latitude_dc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_mc&amp;nbsp;=&amp;nbsp;-latitude_mc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Lon:");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((pos&amp;nbsp;&amp;gt;=&amp;nbsp;9)&amp;nbsp;&amp;&amp;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;11))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos++]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;11)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_dc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('&amp;nbsp;');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;((pos&amp;nbsp;&amp;gt;=&amp;nbsp;12)&amp;nbsp;&amp;&amp;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;17))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos++]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;13)&amp;nbsp;LCDprintc('.');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;17)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_mc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bufpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;18)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(c&amp;nbsp;==&amp;nbsp;'6')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('E');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_mc&amp;nbsp;=&amp;nbsp;-longitude_mc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_dc&amp;nbsp;=&amp;nbsp;-longitude_dc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc('W');&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Height:");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&amp;nbsp;//&amp;nbsp;Height&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos++]&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(pos&amp;nbsp;==&amp;nbsp;23)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos]&amp;nbsp;=&amp;nbsp;'0';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[bufpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ind_quality&amp;nbsp;=&amp;nbsp;'1';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sat_in_view0='X';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sat_in_view1='X';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;valid_row&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;manual_coords&amp;nbsp;=&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pos++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;LCDKeyboardSingleChar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;ProgramXBee(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;local_address,&amp;nbsp;const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;remote_address)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Are&amp;nbsp;you&amp;nbsp;sure?\r&amp;nbsp;press&amp;nbsp;#&amp;nbsp;for&amp;nbsp;yes");&lt;br /&gt;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;LCDKeyboardSingleChar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;while&amp;nbsp;(c&amp;nbsp;==&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c&amp;nbsp;=&amp;nbsp;LCDKeyboardSingleChar();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(c&amp;nbsp;==&amp;nbsp;'#')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_s_UART2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Programming...");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DelayMilliSeconds(4000);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("+++",&amp;nbsp;0,&amp;nbsp;0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("ATMY",&amp;nbsp;local_address,&amp;nbsp;13))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("ATDH",&amp;nbsp;"0000",&amp;nbsp;13))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("ATDL",&amp;nbsp;remote_address,&amp;nbsp;13))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("ATWR",&amp;nbsp;0,&amp;nbsp;13))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(XBeeProcessCommand("ATCN",&amp;nbsp;0,&amp;nbsp;13))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"XBEE&amp;nbsp;programmed!");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDClearScreen();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char&amp;nbsp;XBeeProcessCommand(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;command1,&amp;nbsp;const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;command2,&amp;nbsp;char&amp;nbsp;command3)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;write_s_UART2(command1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(command2&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_s_UART2(command2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(command3&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_c_UART(command3);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(XBeeResponse())&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;1:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"Command&amp;nbsp;");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2(command1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(command2&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2(command2);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"&amp;nbsp;okay\r");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"XBEE&amp;nbsp;said:&amp;nbsp;ERROR");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;0:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprintc(13);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LCDprint2((const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*)"XBEE&amp;nbsp;did&amp;nbsp;not&amp;nbsp;respond");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;char&amp;nbsp;XBeeResponse()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;i;&lt;br /&gt;&amp;nbsp;&amp;nbsp;DelayMilliSeconds(1200);&amp;nbsp;//&amp;nbsp;check&amp;nbsp;if&amp;nbsp;the&amp;nbsp;XBee&amp;nbsp;responds&amp;nbsp;after&amp;nbsp;one&amp;nbsp;second&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(TXcount&amp;nbsp;!=&amp;nbsp;0)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strcom[0]&amp;nbsp;==&amp;nbsp;'O'&amp;nbsp;&amp;&amp;&amp;nbsp;strcom[1]&amp;nbsp;==&amp;nbsp;'K')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(strcom[0]&amp;nbsp;==&amp;nbsp;'E'&amp;nbsp;&amp;&amp;&amp;nbsp;strcom[1]&amp;nbsp;==&amp;nbsp;'R'&amp;nbsp;&amp;&amp;&amp;nbsp;strcom[2]&amp;nbsp;==&amp;nbsp;'R'&amp;nbsp;&amp;&amp;&amp;nbsp;strcom[3]&amp;nbsp;==&amp;nbsp;'O'&amp;nbsp;&amp;&amp;&amp;nbsp;strcom[3]&amp;nbsp;==&amp;nbsp;'R')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TXcount&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;TXcount&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;write_c_UART(char&amp;nbsp;c)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;TXREG&amp;nbsp;=&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;while(!TXSTAbits.TRMT);&amp;nbsp;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;write_s_UART(char&amp;nbsp;*&amp;nbsp;c)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;int&amp;nbsp;pos;&lt;br /&gt;&amp;nbsp;for(pos=0;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;10)&amp;nbsp;&amp;&amp;&amp;nbsp;(c[pos]&amp;nbsp;!=&amp;nbsp;0);&amp;nbsp;pos++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_c_UART(c[pos]);&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;write_s_UART2(const&amp;nbsp;rom&amp;nbsp;char&amp;nbsp;far&amp;nbsp;*&amp;nbsp;c)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;pos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for(pos=0;&amp;nbsp;(pos&amp;nbsp;&amp;lt;&amp;nbsp;10)&amp;nbsp;&amp;&amp;&amp;nbsp;(c[pos]&amp;nbsp;!=&amp;nbsp;0);&amp;nbsp;pos++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;write_c_UART(c[pos]);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;DelayMilliSeconds(int&amp;nbsp;ms)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;int&amp;nbsp;x;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for(x=0;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;ms;&amp;nbsp;x++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Delay10KTCYx(1);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void&amp;nbsp;GPSParse()&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;FLDcounter;&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;curr_pos;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;char&amp;nbsp;FLDpos;&lt;br /&gt;&amp;nbsp;&amp;nbsp;curr_pos&amp;nbsp;=&amp;nbsp;6;&lt;br /&gt;&amp;nbsp;&amp;nbsp;FLDcounter=1;&lt;br /&gt;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(curr_pos=6;&amp;nbsp;curr_pos&amp;nbsp;&amp;lt;&amp;nbsp;76;&amp;nbsp;curr_pos++)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strcom[curr_pos]&amp;nbsp;==&amp;nbsp;',')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(FLDcounter)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[2]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[3]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[4]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[5]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[6]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_mc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;3:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strcom[curr_pos-1]&amp;nbsp;==&amp;nbsp;'S')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_dc&amp;nbsp;=&amp;nbsp;-latitude_dc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_mc&amp;nbsp;=&amp;nbsp;-latitude_mc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;4:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[2]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[3]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[4]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[5]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[6]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_mc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;5:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strcom[curr_pos-1]&amp;nbsp;==&amp;nbsp;'E')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_dc&amp;nbsp;=&amp;nbsp;-longitude_dc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_mc&amp;nbsp;=&amp;nbsp;-longitude_mc;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;6:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ind_quality&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;7:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sat_in_view0&amp;nbsp;=&amp;nbsp;strcom[curr_pos-2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sat_in_view1&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;9:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(FLDpos&amp;nbsp;&amp;lt;&amp;nbsp;10)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[FLDpos]&amp;nbsp;=&amp;nbsp;'0';&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[FLDpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;curr_pos&amp;nbsp;=&amp;nbsp;99;&amp;nbsp;//&amp;nbsp;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&amp;nbsp;exit&amp;nbsp;loop&amp;nbsp;!!!!!!!!!!!!!!!!!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLDcounter++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLDpos&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(strcom[curr_pos]&amp;nbsp;==&amp;nbsp;'.')&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(FLDcounter)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;2:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[0]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[1]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[2]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;latitude_dc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[0]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[1]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;4:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[0]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-5];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[1]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-4];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[2]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[3]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;longitude_dc&amp;nbsp;=&amp;nbsp;atol(buf);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[0]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[1]&amp;nbsp;=&amp;nbsp;strcom[curr_pos-1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;9:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[FLDpos]&amp;nbsp;=&amp;nbsp;strcom[curr_pos+1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[FLDpos+1]&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLDpos&amp;nbsp;=&amp;nbsp;10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLDpos++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(FLDcounter&amp;nbsp;==&amp;nbsp;9)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buf[FLDpos]&amp;nbsp;=&amp;nbsp;strcom[curr_pos];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FLDpos++;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4321424032531657785?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4321424032531657785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4321424032531657785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4321424032531657785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4321424032531657785'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/mainc-file.html' title='main.c file'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-1673693264525983265</id><published>2008-09-25T12:14:00.001-07:00</published><updated>2008-09-25T12:14:56.581-07:00</updated><title type='text'>Tracker.h File</title><content type='html'>&lt;blockquote&gt;void GPSParse(void);&lt;br /&gt;char XBeeResponse(void);&lt;br /&gt;void DelayMilliSeconds(int);&lt;br /&gt;void write_s_UART(char *);&lt;br /&gt;void write_s_UART2(const rom char far *);&lt;br /&gt;void LCDprint2(const rom char far *);&lt;br /&gt;char LCDKeyboard(void);&lt;br /&gt;char LCDKeyboardSingleChar(void);&lt;br /&gt;void ISRgest(void);     // I.S.R.&lt;br /&gt;void Servo(void);    &lt;br /&gt;char GPIO_read(void);    // GPIO&lt;br /&gt;void init_sys(void);    // init    &lt;br /&gt;void I2CW(char, char, char, char, char);&lt;br /&gt;void I2CR(void);     // I2C generic read&lt;br /&gt;void flashLED(char);&lt;br /&gt;long getDeltaLatitude(void);&lt;br /&gt;long getDeltaLongitude(void);&lt;br /&gt;long getHeight(void);&lt;br /&gt;long approx_atan2(long, long);&lt;br /&gt;long isqrt(long);&lt;br /&gt;void LCDprintc(char);&lt;br /&gt;void LCDprint(char *);&lt;br /&gt;void LCDClearScreen(void);&lt;br /&gt;void EnterCoords(void);&lt;br /&gt;void ProgramXBee(const rom char far *, const rom char far *);&lt;br /&gt;char XBeeProcessCommand(const rom char far *, const rom char far *, char);&lt;br /&gt;void write_c_UART(char);&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-1673693264525983265?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/1673693264525983265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=1673693264525983265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/1673693264525983265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/1673693264525983265'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/trackerh-file.html' title='Tracker.h File'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-3867227233315105836</id><published>2008-09-25T08:52:00.000-07:00</published><updated>2008-09-25T12:11:03.530-07:00</updated><title type='text'>Motor Tripod Part II</title><content type='html'>The last test was finally a successful one. I still will need to check the distance the wireless connection can work with and the test site I used is not wide enough, just 20m away causes the GPS errors to add up a lot. And the site does not have great visibility to the sky either with trees and hills around. So much about the excuses.&lt;br /&gt;&lt;br /&gt;So what is working? Let me show you the video first. I place the GPS receiver next to the tripod and power up both. After a few seconds, the tripod electronic will show on the LCD that it found 6 or 7 satellites so you can be sure the position to be accurate. You press "5" on the keyboard and the tripod will store this position as its own.&lt;br /&gt;Next I placed the GPS receiver 15m away so the controller can lock on the remote position. Back at the tripod I then use the keyboard to pan/tilt the video head until the camera looks straight at the position where the GPS receiver is lying on the ground. And that is where the video starts...&lt;br /&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-26c12a82f68dd8c9" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v20.nonxt7.googlevideo.com/videoplayback?id%3D26c12a82f68dd8c9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330070915%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D124F3E20CF09174CD191B01F2BEA28BE45C208BF.67866C325404C7D8F40A3A1F9075BF92BCD072A7%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D26c12a82f68dd8c9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8_VKLd_ASqPI4y8SjAgSRWyTEPk&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v20.nonxt7.googlevideo.com/videoplayback?id%3D26c12a82f68dd8c9%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1330070915%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D124F3E20CF09174CD191B01F2BEA28BE45C208BF.67866C325404C7D8F40A3A1F9075BF92BCD072A7%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D26c12a82f68dd8c9%26offsetms%3D5000%26itag%3Dw160%26sigh%3D8_VKLd_ASqPI4y8SjAgSRWyTEPk&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;As said, I will post another video when I have the chance to test it on open ground.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Details...&lt;br /&gt;The program consists basically of two phases. One is where all the setup takes place and the tripod position is locked in. And the second phase is the tracking mode with the option to manually control the head to maintain the offsets.&lt;br /&gt;&lt;br /&gt;In the first phase the controller will carefully print its current state onto the LCD. Did it receive any serial data yet? Did it receive a valid GPS sentence? Does the GPS sentence tell that we have a satellite fix? And finally, if all is true it will tell you can press "5" at any time and start printing the number of satellites we have in view.&lt;br /&gt;In order to get a serial connection via the XBee modules, they need to be programmed first. So I had to by a prototype board with which you can connect the XBee to the USB port of the computer and using a terminal emulation (Windows Hyperterminal) you can bring the module in the programming state by typing "+++" with two seconds lead and lag time where no data is sent. Then using some commands like "ATDL0202" you can tell it to which module it should send the data to - the one with the number 0x0202, what its own address is and save all of that into the XBee memory. To simplify that task for you, when no serial data is received you can press "1" or "2" to program either the local or the remote module. It does not matter which one is what, all I do is in "1" I set the XBee module address to one value and the the remote to another, when you press "2" I do the same but now the former remote address is the local. So all you have to do is insert the first XBee module, power up the controller, wait until it says "no data received, press 1 or 2" and then you press "1". Power down the controller, remove the XBee and place it into the socket of the GPS receiver. And the other XBee is now placed into the controller and programmed with "2". From now on you have a transparent serial connection between those two XBee's and when the GPS receiver is turned on, data should be received.&lt;br /&gt;&lt;br /&gt;Once the local position is locked in, the controller goes into the second phase, the locking and aligning. To avoid erratic movement, the tracking is only done if the GPS module is more that 10m away. The first time the tracking starts, the current video head position is used as reference zero point. So at first, the head will not move at all and then start following you. If you walked away along where the camera looked to, the position would be correct already. But very likely it is off by a bid. So you place the GPS receiver somewhere remote and leave it there, then you walk back to the tripod and using the keys "4"-"6" and "2"-"8" you can move the zero-point until the camera looks directly at the GPS device. And from now on, the camera should keep the GPS always in the same position of the viewfinder - more or less.&lt;br /&gt;&lt;br /&gt;Another option to provide a GPS position is to manually type it in. This is only useful if no GPS data is received at that time! For example, I might not trust the home position, I want the enter it by myself. So I power up the tripod but leave the GPS unit off. At any time you can press the "#" button and then using the keyboard enter the coordinates manually. At first, you type the digits for the latitude in the format 50° 20.2342N. So you just type the number sequence 5-0-2-0-2-3-4-2-2, the last "2" stands for north. Then the latitude 004° 43.2341E and finally the height in meter 000123. This manual entry is interpreted as a first valid GPS sentence, so you can press "5" to lock it in.&lt;br /&gt;More important, instead of placing the GPS unit somewhere remote and then adjust the camera to it, you can switch it off then and manually enter the coords of any landmark in view. This will be used as the remote position and using the keyboard you then turn the head towards this location to zero it in. Turn on the GPS device again and as soon you are 10m away the head will look straight to you.&lt;br /&gt;This feature was particularily cool during testing and calibrating the code. Sitting at the computer, entered the GPS position taken from google earth and the head started to move.&lt;br /&gt;&lt;br /&gt;Another feature built in is to freeze the height. This is particularily useful if the camera and the object is on the same level the entire time anyway - Windsurfing, yes? - or like in my testing the GPS is close and does not have a good fix. In this case the height information keeps wandering by 10m within minutes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another change I made recently was to implement servo speed. Before, the GPS did send a new position every second. As a result, the head did jump to the new angle and then remained there for the reminder of the second to jump by another degree then. The result was no smooth movement, not at all. What I do now is calculating the degrees to be moved, divide that by one second and that is the rotation speed. So we are up to one second behind the actual position but that is good enough. Some fine tuning will be in order later.&lt;br /&gt;&lt;br /&gt;The one step that is still missing is programming the GPS. By default it sends different GPS sentences, more than we are interested in. The XBee has a buffer of 100 characters which are sent at once and one GPS position sentence fits perfectly into that. So even without flowcontrol, we have a very reliable connection. Would we send more data every second, much more sentences would be lost. So I told the GPS I am interested in the GPGGA sentences only. The other thing, by default the SIRF chip is set to static movement and track smoothing, both good for higher speed movements but not for walking - so I disabled both. To do that you have to send a command to the GPS bringing it into binary mode where no ASCII data istransferred but binary data and then you can set those advanced options. Found that too dangerous to try via the XBee so I rather used a tool called SIRFdemo. But for this the GPS has to be connected to the computer directly or you have to make sure the binary mode is using 9600Baud as well. The first time I did that wrong and the result was the XBee couldn't talk to the GPS anymore due to different baud rates. So I had to program both XBees to 57kbit rate, then bring the GPS back into ASCII mode at 9600baud and reprogram the XBees again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-3867227233315105836?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=26c12a82f68dd8c9&amp;type=video%2Fmp4' length='0'/><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/3867227233315105836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=3867227233315105836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3867227233315105836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/3867227233315105836'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/motor-tripod-part-ii.html' title='Motor Tripod Part II'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4372377185495077286</id><published>2008-09-17T12:36:00.000-07:00</published><updated>2008-09-17T14:06:30.523-07:00</updated><title type='text'>Motorized Tripod with GPS</title><content type='html'>The idea came during a Windsurfing trip. I'd like somebody to video tape me while windsurfing. Trouble is you cannot find anybody, it is windy at the beach, nobody wants to film for an hour or more. And you need a tripod as the wind blows  so strong  you cannot hold the camera steady enough. What if you have a motorized pan-tilt head mounted on the tripod which receives the GPS coordinates wireless and translates that into the correct angles to keep  the GPS receiver in the center of the view finder.&lt;br /&gt;&lt;br /&gt;Given my experience with GPS you can assume - good reception given - to get the correct position from the GPS with an error margin of about 5 meters in distance, height is worse, I would expect the position wandering +-10meters. So the first limitation is, you cannot expect to follow objects very close to the camera. If the camera position is off by five meters and the GPS receiver another 5 meters in the other direction you need to be at least 20m away to make sure the camera points somewhat into your direction. For Windsufing no problem.&lt;br /&gt;&lt;br /&gt;So the entire project can be split into the following components:&lt;br /&gt;1. Receive GPS data wireless over a good distance&lt;br /&gt;2. Microcontroller and its software&lt;br /&gt;3. The pan-tilt mechanic&lt;br /&gt;&lt;br /&gt;Typical GPS receivers have either an USB, a bluetooth or a serial connection to the computer. Bluetooth would be just perfect but its range is  10meter. In theory bluetooth can span up to 100meter but even that is not far enough for this application nor do you find bluetooth class2 enabled GPS recievers prebuilt. All common microcontrollers support a serial connection, the easiest method would be to go for a serial GPS receiver and some wireless replacement for a serial cable. The most current standard for that is &lt;a href="http://en.wikipedia.org/wiki/ZigBee"&gt;ZigBee or XBee&lt;/a&gt;. Low-Cost, Low-Power, free 2.4GHz band and distances up to 1.5km.&lt;br /&gt;&lt;br /&gt;Next question was how to connect the XBee module with the GPS receiver on one side and on the other end, XBee connected to the microcontroller. Guess what, there are controllers available already that have a plug for XBee modules built in.&lt;br /&gt;&lt;br /&gt;Deciding on the mechanical components took the longest time. Basically I had two options. Either use a stepper motor or RC servos. Stepper motors are very precise, slower but that  would be okay. And I would need to make the mechanics all by myself. A standard RC servo on the other hand is all I really needed. It is fast, cheap, it is a +-180 degree rotating movement already. But for a heavy D-SLR camera they might not be strong enough. And the question still was, how to attach the camera to the servos.&lt;br /&gt;&lt;br /&gt;At the end I bought the following components (bought in Germany but I am sure you find equivalent offerings anywhere else).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.amazon.de/Navilock-NL-501ETTL-Sirf3-TTL-Modul/dp/B0011E5B8U/ref=sr_1_5?ie=UTF8&amp;s=ce-de&amp;qid=1221683163&amp;sr=8-5"&gt;Navilock NL-501ETTL Sirf3 TTL Modul&lt;/a&gt;: A GPS receiver with 3V UART interface and the SIRFIII low power chipset, costs just 30EUR.&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p980_XBee-wireless-Zigbee-PRO-Modul-mit-Drahtantenne.html"&gt;XBee PRO Module with wire antenna&lt;/a&gt;: Need two items, 45EUR each.&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p868_Droids-XBee-Simple-Board.html"&gt;Droids XBee Simple Board&lt;/a&gt;: The board connecting the GPS unit to the XBee module. As it has an integrated voltage regulator it will power both, the XBee and the GPS.&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p867_Droids-Multi-Interface-Board-PIC18F2520.html"&gt;Droids Multi Interface Board PIC18F2520&lt;/a&gt;: A PIC microprocessor based development board with Servo output, XBee enabled and ICSP interface for programming.&lt;br /&gt;The PICKit2 programmer to transfer the compiled software into the microcontroller. In theory you can do that via other ways as well, but if anything goes wrong or you need to debug the code you have to have such a thing anyway. (see &lt;a href="http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&amp;nodeId=1406&amp;dDocName=en023805"&gt;microchip web site&lt;/a&gt;) Software is available there free of charge including  the C compiler I used, it is called C18. If you search for "Clone Microchip  Programmer" or "pic kit clone" in some variations at e.g. ebay you get this for 30EUR or so.&lt;br /&gt;&lt;a href="http://www.robot-electronics.co.uk/htm/Lcd03tech.htm"&gt;LCD03 display and keyboard&lt;/a&gt;: Used to interact with the user. Search for LCD03, seems to be a standard component found everywhere.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p676_GIANT-Aluminium-Servohalterung--Paar.html"&gt;Servo bracket&lt;/a&gt;: With these you can screw multiple servos together and build the pan-tilt head. This bracket will hold the servo body.&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p952_GIANT-Aluminium--C--Servohalterung-lang--Paar.html"&gt;Servo C-bracket&lt;/a&gt;: The other half of the bracket, this time for the servo head.&lt;br /&gt;&lt;a href="http://www.nodna.com/xtc/product_info.php?info=p286_Hitec-Spline-Metal-Servo-Horn--mit-Gewinde-.html"&gt;Metal Servo Horn&lt;/a&gt;: Required component for the two brackets, two pieces needed.&lt;br /&gt;&lt;a href="http://www.amazon.de/gp/product/B000JLK5PU"&gt;Manfrotto Quick release plate&lt;/a&gt;: Two items, one is used to attach the camera to the servo bracket, the other is between servo and tripod.&lt;br /&gt;Hitec HS-5745MG servos: Again, two pieces required. I tried with analog servos first but they kept trembling even in a static position. Digital servos are much better and do not cost that much more.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;...more to come...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_trZeScPDm6Q/SNFwrfjL4vI/AAAAAAAAAB0/MYPTRYgT6-k/s1600-h/20080910_104912.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_trZeScPDm6Q/SNFwrfjL4vI/AAAAAAAAAB0/MYPTRYgT6-k/s400/20080910_104912.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247098933369103090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_trZeScPDm6Q/SNFwrualiNI/AAAAAAAAAB8/z1zQijYVsAs/s1600-h/20080910_105022.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_trZeScPDm6Q/SNFwrualiNI/AAAAAAAAAB8/z1zQijYVsAs/s400/20080910_105022.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247098937359567058" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SNFwr6V7v3I/AAAAAAAAACE/YsDRJuINg4A/s1600-h/20080910_105041.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_trZeScPDm6Q/SNFwr6V7v3I/AAAAAAAAACE/YsDRJuINg4A/s400/20080910_105041.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247098940561276786" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_trZeScPDm6Q/SNFwsPQTLwI/AAAAAAAAACM/W5UK--x-YSo/s1600-h/20080910_105105.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_trZeScPDm6Q/SNFwsPQTLwI/AAAAAAAAACM/W5UK--x-YSo/s400/20080910_105105.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247098946174791426" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_trZeScPDm6Q/SNFwsgioypI/AAAAAAAAACU/cEGJVI4CbBY/s1600-h/20080914_133532.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_trZeScPDm6Q/SNFwsgioypI/AAAAAAAAACU/cEGJVI4CbBY/s400/20080914_133532.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5247098950815107730" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4372377185495077286?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4372377185495077286/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4372377185495077286' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4372377185495077286'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4372377185495077286'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/motorized-tripod-with-gps.html' title='Motorized Tripod with GPS'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_trZeScPDm6Q/SNFwrfjL4vI/AAAAAAAAAB0/MYPTRYgT6-k/s72-c/20080910_104912.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-4574931654524955999</id><published>2008-09-16T13:59:00.000-07:00</published><updated>2008-09-16T14:23:12.134-07:00</updated><title type='text'>Lego Mindstorms NXT and Power Functions</title><content type='html'>Lego recently came out with the &lt;a href="http://technic.lego.com/en-US/powerfunctions/default.aspx"&gt;Power Functions system&lt;/a&gt;, strong and yet small enough motors to be used nicely. You can even remote control them given you bought their IR receiver. But to connect them to Mindstorms NXT robotic system, nothing is available yet. The suggestion is to create IR signals with the NXT device to control them!?!?&lt;br /&gt;&lt;br /&gt;The power functions connector cable is very simple, there is GND and +V on one end each and the middle two cables are used to control the motors. If there is a voltage difference of +9V it rotates at full speed in one direction, -9V the other direction and everything inbetween controls the speed. Like in any other simple motor.&lt;br /&gt;&lt;br /&gt;So what we need is a standard H-drive for any analog motors, I picked the one from &lt;a href="http://www.mindsensors.com/index.php?module=pagemaster&amp;PAGE_user_op=view_page&amp;PAGE_id=58"&gt;mindsensors.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mindsensors.com/images/pagemaster/MTRMXNx.gif"&gt;&lt;img src="http://www.mindsensors.com/images/pagemaster/MTRMXNx.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Originally designed to connect RCX motors to it, it has two small soldering holes at each of the four motor drives. From the official lego web shop I bought some more spare power function cables, cut them in half and soldered them to the motor ports. And one cable is connected to the battery box.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_trZeScPDm6Q/SNAjHEJxlZI/AAAAAAAAABs/bjeFR3rJY5A/s1600-h/IMGP0356.JPG"&gt;&lt;img src="http://4.bp.blogspot.com/_trZeScPDm6Q/SNAjHEJxlZI/AAAAAAAAABs/bjeFR3rJY5A/s400/IMGP0356.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5246732170167424402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As the device was designed to drive motors, the NXT-G building block is just perfect. You specify the rotation direction and speed - that's it. Works very well.&lt;br /&gt;And yes, I did not connect the reference voltage so I cannot daisy-chain components. Why would I want to?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-4574931654524955999?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/4574931654524955999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=4574931654524955999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4574931654524955999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/4574931654524955999'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/lego-mindstorms-nxt-and-power-functions.html' title='Lego Mindstorms NXT and Power Functions'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_trZeScPDm6Q/SNAjHEJxlZI/AAAAAAAAABs/bjeFR3rJY5A/s72-c/IMGP0356.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-6845043100181960538</id><published>2008-09-16T09:29:00.001-07:00</published><updated>2008-09-16T13:58:40.842-07:00</updated><title type='text'>Update: Nikon D300 and bluetooth</title><content type='html'>Still very happy with the GPS solution, still sticking to the original GPS receiver. The XAiOX iTrackU did work  as well, but did not provide the advantages I was hoping for. I thought I will be notified when the battery is low and yes, it does. With a loud and scratching voice. You can turn down the volume but just in three steps and it is still very loud. So I returned it.&lt;br /&gt;&lt;br /&gt;For the summer holidays at the windy beach of &lt;a href="http://www.rene-egli.com/"&gt;Fuerteventura&lt;/a&gt; I installed a 18mm O-ring seal you can get at any DiY shop. The Mini-USB connector I sealed with an adhesive tape, on the image you see a white one.&lt;br /&gt;&lt;br /&gt;In the first image you see the bluetooth adapter mounted...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_trZeScPDm6Q/SNAbzikKUHI/AAAAAAAAABU/GyZw7q63sJo/s1600-h/IMGP0351.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_trZeScPDm6Q/SNAbzikKUHI/AAAAAAAAABU/GyZw7q63sJo/s400/IMGP0351.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5246724138152382578" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Second image shows the backside of the adapter with the O-ring seal...&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_trZeScPDm6Q/SNAbz4hdySI/AAAAAAAAABc/1D6o3H51mEE/s1600-h/IMGP0352.JPG"&gt;&lt;img src="http://3.bp.blogspot.com/_trZeScPDm6Q/SNAbz4hdySI/AAAAAAAAABc/1D6o3H51mEE/s400/IMGP0352.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5246724144046655778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And from a different perspective&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_trZeScPDm6Q/SNAb0UmpsPI/AAAAAAAAABk/MbMoWV7udp8/s1600-h/IMGP0354.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_trZeScPDm6Q/SNAb0UmpsPI/AAAAAAAAABk/MbMoWV7udp8/s400/IMGP0354.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5246724151584600306" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-6845043100181960538?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/6845043100181960538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=6845043100181960538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6845043100181960538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6845043100181960538'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/09/update-nikon-d300-and-bluetooth.html' title='Update: Nikon D300 and bluetooth'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_trZeScPDm6Q/SNAbzikKUHI/AAAAAAAAABU/GyZw7q63sJo/s72-c/IMGP0351.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-355411830490069516.post-6953808538486160200</id><published>2008-04-28T07:46:00.000-07:00</published><updated>2008-04-29T04:07:43.708-07:00</updated><title type='text'>Nikon D300 Bluetooth GPS</title><content type='html'>&lt;p&gt;After thinking about it for a longer time I finally decided to try GPS together with the D300. A cable based solution was out of the question. Not only would it be bulky to use but the choice of GPS devices with serial connectivity is very limited too. By far the most GPS receivers use bluetooth and the others USB connections. Today I am aware of two bluetooth solutions for the Nikon. One is the &lt;a href="https://ecommerce.redhensystems.com/pc-47-2-blue2can.aspx"&gt;blue2can&lt;/a&gt;, a device built by a professional company with support and the like, the other is this: &lt;a href="http://www.foolography.com/"&gt;Foolography Unleashed&lt;/a&gt; built by a one-person company, the one I settled for.&lt;/p&gt;&lt;a href="http://2.bp.blogspot.com/_trZeScPDm6Q/SBYugh-f01I/AAAAAAAAAAM/AMHCU5mOSx8/s1600-h/IMGP0240.jpg"&gt;&lt;/a&gt;&lt;a href="http://4.bp.blogspot.com/_trZeScPDm6Q/SBY41B-f04I/AAAAAAAAAAk/G5gGhNp9y_c/s1600-h/IMGP0240.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5194401703933236098" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_trZeScPDm6Q/SBY41B-f04I/AAAAAAAAAAk/G5gGhNp9y_c/s400/IMGP0240.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Let me first introduce how all of that works before going into the details.&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The Unleashed module comes with a special usb-to-serial cable which is used to program it. As usual the first thing is to install the device driver - done in a minute - then you plugin the cable to the computer, the installed drivers will be recongnized and you end up with an additional com port. Now you plug in the Unleashed module to the other end of the cable and start the Unleashed configuration program to search for all available Bluetooth devices and pair it with the GPS device. Once this step is done, you unplug the module and insert it to the 10 pin port of the camera. Turn on the camera, and two seconds later the GPS symbol is shown telling that a GPS device was found and is sending correct positional data.&lt;/p&gt;&lt;a href="http://2.bp.blogspot.com/_trZeScPDm6Q/SBYu8h-f02I/AAAAAAAAAAU/cVzIQ0zN8JA/s1600-h/IMGP0235.jpg"&gt;&lt;/a&gt;&lt;a href="http://3.bp.blogspot.com/_trZeScPDm6Q/SBY0Sx-f03I/AAAAAAAAAAc/VMLV4SsM7BE/s1600-h/gps.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5194396717476205426" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_trZeScPDm6Q/SBY0Sx-f03I/AAAAAAAAAAc/VMLV4SsM7BE/s400/gps.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;This ease of use is really something that I was amazed a lot. I expected that ... I don't know, you have to turn on the GPS receiver first and then the camera or nonsense like that. Or that it takes a minute until the camera is ready. Nothing like that!&lt;br /&gt;The next step was to go to the GPS menu of the camera and tell it to enable the "auto meter off". When you click on AF-S or press the shutter halfway, the 10 pin port gets power, and....if you don't give the GPS unit its five seconds to connect, you will get a picture but without the GPS coordinates. To prevent that, this menu item keeps the exposure meter "On" all the time the camera is turned on and(!) a GPS unit is connected. The second menu item is to view the live GPS coordinates the camera receives. So I was able to see I am 50° North, 0° 23' E and 60m high. Excuse me? 0° 23' East? Very unlikely. By connecting the GPS mouse to the computer and running an excellent tool called GPSDiag (e.g. &lt;a href="http://www.download.com/GPSDiag/3000-2130_4-10055902.html"&gt;found here&lt;/a&gt;) I could validate that the GPS receiver is working fine and tells we are 007°. Just to make sure, the degrees are wrong, not the minutes &amp;amp; seconds! It was when I started to add pictures to google maps and wanted to correct them manually that I figured, the problem was with viewing the GPS coordinates. The values inside the EXIF GPS fields have been correct anyway! Oh dear. I could even see from which position of the tennis court the picture was taken! I would give it an accurancy of about 2 meters? Reporting this problem to Foolography we had been able to confirm that this bug in the D300 View GPS Coordinates screen is common to all GPS receivers, it was just overlooked by now. So don't get scared if the coords are off, it is just the viewing. The one place where it really matters are the EXIF fields and there all is in order. Nevertheless I have reported the bug to Nikon.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;What is particularily neat about the Skytraq100+ GPS receiver is its power management. If you turn off the camera (the bluetooth connection), it will go into a standby mode five minutes later. Turn on the camera again and it will take 5 seconds until the camera is connected to the GPS receiver, and then another n-seconds until it receives a valid GPS position - the TimeToFirstFix (short TTFF) which is between 1 second and 10 seconds from what I have seen. Depends on your GPS receiver obviously but all modern ones should be similar.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Why spend that much money? Doesn't a GPS Logger do the same job?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;GPS Loogers are devices that contiously record the current position in memory and later you can read that file(s) and given the timestamp of the GPS signal and the time value the camera stored in the EXIF and some software you can merge the two pieces into a geotagged jpeg. Those GPS loggers are cheap, they record the position either every n seconds or whenever moved a certain distance. They have enough memory to store a lot of records and the software that merges the information is supposed to be easy to use too. It is the handling and the numerous things that could go wrong. You plugin the logger and download the location files via some software. Then you disconnect, connect the camera, download its images. Then you start the software to merge the two. You won't see if the GPS logger stopped working for whatever reason, whereas at the camera display you will look whenever you turn it on. The camera time might be off a few seconds or even a minute (or an hour because of daylight saving time?) and you will have no chance to correct that, whereas the bluetooth solution has all at once, it even shows the camera time plus the GPS time with atomic clock precision in the EXIF data.&lt;/p&gt;&lt;p&gt;When I put all that together, how many hours of manual work it will take to sync that data over the months and years, and assign labor "costs" to that, I'd say the bluetooth solution is cheaper. Might not be worth it but cheaper.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;What are the differences between the two bluetooth products?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Bluetooth supports multiple pairing methods, methods to make sure that e.g. your headphone doesn't suddenly receive somebody else's calls. The Blue2Can device pairs with the next available bluetooth device supporting the SPP (serial line protocol) which very likely will be a GPS unit. Of course you could say that "stealing" the coordinates information from somebody else's GPS unit who is 10m away is no big deal. But now imagine that GPS device you are connected is moving out of range. You end up with no GPS data until you turn off the camera and turn it on again. Not too nice, is it? Another issue could be, you connect to the GPS receiver but it is used by some other computer, e.g. your handheld is using one GPS mouse, the camera is supposed to use the other. You cannot control which device the camera connects to and if it is the used one, the bluetooth error "cannot open serial port" is returned as it is used by the other device already. And that's it - no GPS data. No reconnect. Just no data and no clue why.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;With the Unleashed module the GPS device is really bound to it. Yes, you can choose the other connection mode also but why would you? And this was really the key reason for myself - less troubles. Just turn on the camera and you are ready.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The concern I had however was, can you trust a one man shop? What if the programming cable has no driver for Longhorn or whatever operating system I will use in five years? Or the configuration software? Actually, the Unleashed module is using components from well established companies, just tied those together and made it work. So both software components will likely have full support, more support than a small company somewhere. The downside of this approach are higher costs. That bluetooth to serial converter used is likely this one &lt;a href="http://www.sena.com/products/industrial_bluetooth/esd.php"&gt;http://www.sena.com/products/industrial_bluetooth/esd.php&lt;/a&gt; and it costs 50EUR already. Add the programming cable, the housing etc and just the material costs get to 150EUR or more I guess. So the price is okay, I'd say. And both products cost about the same anyway.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Usability&lt;/span&gt;&lt;/p&gt;&lt;p&gt;One concern raised often is the battery drain caused by the bluetooth plug. I do not want to argue that it does not consume much according to the specs, I rather say: First, if you turn off the camera the module gets disconnected from power and hence does not change anything from before. And second, the battery of the camera still lasts for four to five days usage. Actually, I can't see any difference compared to before.&lt;/p&gt;&lt;p&gt;The other thing I have read was the question how tight the plug sits. The camera would have a screw thread, but the Unleashed module does not. It just plugs in. And frankly, I would have no idea how to use the screw thread given the small dimensions of the device. It sits tight, it cannot fall off by itself, it is well protected by the camera body so no way it can dangle itself and get ripped off. And still you can unplug it with some force but without the fear of breaking something. So in that respect it is really well balanced.&lt;/p&gt;&lt;p&gt;And before I forget, the flash popup button is fully accessible, its control button below good enough. Given I never changed the flash setting via this lower button I wouldn't even care.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;"&gt;Wishlist&lt;/span&gt;&lt;/p&gt;&lt;p&gt;It seems to be sort of a personal thing, maybe my German attitude, but everything should be made perfect. No matter what it costs, no matter if there is not even reasoning behind. It is just a philosophy. Same thing with the Unleashed module - I would love to see it getting perfect. The one thing I can certainly not live with is, the camera is no longer resistant to spray water. Geotagging just sounds like synonym to exposing the camera to not-so-good weather. The plug body itself is sealed, however it has the mini-USB and the remote shutter connectors open, what makes it worse they are on the upper side. Fixing that is simple, in worst case an adhesive tape will do the trick. Or I find some plastic pieces from other devices to seal them. But the 10-pin connector to the camera is exposed. I will put some gasket around, the module will create enough pressure on to seal it without sliding slowly out over the time I am sure.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;And then there are more features one can think of. I considered if having the compass heading would be important to me. Not the GPS heading which is generated by the direction the GPS receiver was being moved but the real magnetic compass heading. There are a few GPS receivers out there, one I found neat is the &lt;a href="http://www.wintec.com.tw/en/product_detail.php?pro_id=78%20style="&gt;Wintec WSG-1000&lt;/a&gt; (note, no SIRF III chip so if it works or not is unknown at the time!). But thinking about it, the heading only makes sense if the GPS receiver points into the same direction as the camera does. But that forfeits the entire idea of putting the GPS in the pocket and never look at it. So I had to say, given that restriction, what good for is the compass heading then? On the other hand, if the Unleashed module would have a magnetic sensor and mix its information into the GPS stream of data,......yeah, yeah, just dreaming. Sounds like a hell of development work, might get jammed by the camera electronics anyway and for this feature I would not spend a lot of money. But...dreaming...making something perfect.... But actually, who cares.&lt;/p&gt;&lt;p&gt;The other thing is the remote shutter. You have something that connects to the pins that operate the remote shutter, that thing has a wireless connection, so, can't that be used then? Would be kind of cool to open an application on the cell phone and operate the shutter from there, wouldn't it? I am not particularily sure it would make a lot of sense, certainly not for my needs but, well, you guessed it probably, ...making things perfect...philosophy...just for the sake of it. Development wise again I would guess it is rather difficult. The chip used right now is a serial to bluetooth converter. It will not support two bluetooth devices at the same time so you would need to build the bluetooth converter yourself, add some microcontroller, the module would probably grow in dimensions and price. Or we build a GPS unit with a release button, but then the advantage of using any new GPS module is gone.&lt;/p&gt;&lt;p&gt;Both features would be nice to have but for me, no thank you, not worth any additional costs.&lt;/p&gt;&lt;p&gt;Right now I am absolutely happy with the money spent, next thing I will look at is the &lt;a href="http://www.xaiox.com/itracku_sirf3.htm"&gt;XAiOX iTrackU DATALOGGER SiRF III&lt;/a&gt;. And hopefully even the GPS display on the camera will be perfect soon.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/355411830490069516-6953808538486160200?l=wdaehn.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wdaehn.blogspot.com/feeds/6953808538486160200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=355411830490069516&amp;postID=6953808538486160200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6953808538486160200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/355411830490069516/posts/default/6953808538486160200'/><link rel='alternate' type='text/html' href='http://wdaehn.blogspot.com/2008/04/after-thinking-about-it-for-longer-time.html' title='Nikon D300 Bluetooth GPS'/><author><name>wdaehn</name><uri>http://www.blogger.com/profile/11792883669228965857</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_trZeScPDm6Q/SBY41B-f04I/AAAAAAAAAAk/G5gGhNp9y_c/s72-c/IMGP0240.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
