<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>DE CODER.com</title>
		<link>https://decoder.ucoz.com/</link>
		<description>Forum</description>
		<lastBuildDate>Tue, 16 Dec 2014 18:03:34 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="https://decoder.ucoz.com/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>Arduino and A ps3 Controller</title>
			<link>https://decoder.ucoz.com/forum/4-9-1</link>
			<pubDate>Tue, 16 Dec 2014 18:03:34 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;https://decoder.ucoz.com/forum/4&quot;&gt;Arduino And C+ Programing&lt;/a&gt;&lt;br /&gt;Thread starter: sault73&lt;br /&gt;Last message posted by: dustinwpearce&lt;br /&gt;Number of replies: 1</description>
			<content:encoded>&lt;a class=&quot;link&quot; href=&quot;http://decoder.ucoz.com/blog/using_a_usb_host_shield_and_a_bluetooth_dongle_to_get_data_from_a_ps3_controller/2014-08-26-7&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-size:10pt;&quot;&gt;USING A USB HOST SHIELD AND A BLUETOOTH DONGLE TO GET DATA FROM A PS3 CONTROLLER:&lt;/span&gt;&lt;/b&gt; &lt;br /&gt; &lt;div align=&quot;center&quot;&gt;&lt;!--IMG1--&gt;&lt;a href=&quot;http://decoder.ucoz.com/_fr/0/1392840.png&quot; class=&quot;ulightbox&quot; target=&quot;_blank&quot; title=&quot;Click to view in full size...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://decoder.ucoz.com/_fr/0/s1392840.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt;&lt;/div&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; I’m interested in using a PS3 controller as the remote for future projects/robots. Having received all of the required hardware, I decided to make this video explaining the process of setting up the PS3 controller and Arduino for communication via Bluetooth. See below the video for details. UPDATE: The latest USB host library does not print out any debug information, so you won’t see any of the information that is printed out below “Bluetooth Library Started.” You should still be able to connect your PS3 controller and see it’s data output in the terminal. &lt;br /&gt;&lt;br /&gt; A USB host shield: &lt;a class=&quot;link&quot; href=&quot;http://u.to/-QaxCA&quot; title=&quot;https://www.circuitsathome.com/products-page/arduino-shields&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Circuits@home&lt;/a&gt; and &lt;a class=&quot;link&quot; href=&quot;http://u.to/AQexCA&quot; title=&quot;https://www.sparkfun.com/products/9947&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Sparkfun&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; A Bluetooth dongle: The &lt;a class=&quot;link&quot; href=&quot;http://u.to/-AaxCA&quot; title=&quot;https://github.com/felis/USB_Host_Shield_2.0/wiki/PS3-Information&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;wiki&lt;/a&gt; page for using a PS3 controller will have a list of compatible dongles (although note that in the video I mention that one of the “supported” dongles doesn’t in fact work). &lt;br /&gt;&lt;br /&gt; Here are the two I have: The &lt;a class=&quot;link&quot; href=&quot;http://u.to/AAexCA&quot; title=&quot;http://www.ebay.com/itm/200468994562?ssPageName=STRK:MEWNX:IT&amp;amp;_trksid=p3984.m1439.l2649#ht_2636wt_1189&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;black one&lt;/a&gt; (working) and the &lt;a class=&quot;link&quot; href=&quot;http://u.to/9waxCA&quot; title=&quot;http://www.microcenter.com/product/387794/Bluetooth_40_USB_Micro_Adapter&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;green one&lt;/a&gt;(not working, although listed as compatible). These are also confirmed working (by the developers): &lt;a class=&quot;link&quot; href=&quot;http://u.to/-waxCA&quot; title=&quot;http://www.microcenter.com/product/279381/Bluetooth_USB_Micro_Adapter&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Kingston&lt;/a&gt; and &lt;a class=&quot;link&quot; href=&quot;http://u.to/_QaxCA&quot; title=&quot;http://www.microcenter.com/product/296751/Bluetooth_USB_Adaptor&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Zoom&lt;/a&gt;.&lt;b&gt;The Software (besides the Arduino IDE):&lt;/b&gt;UPDATE: Some people have had trouble with the newer versions of the USB host shield library. &lt;br /&gt;&lt;br /&gt; The new library does not print out the debug information you see in my video and the sketch will become too large to upload to an UNO if you turn the debugging on. If you would like to use the exact same version I use in my video (and am still using), you can get it &lt;a class=&quot;link&quot; href=&quot;http://u.to/_AaxCA&quot; title=&quot;https://dl.dropboxusercontent.com/u/43421685/Website%20Content/USB_Host_Shield_Library.zip&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; You can get the latest version of the USB host shield library below.You will need to download the entire USB host shield library from GitHub. &lt;a class=&quot;link&quot; href=&quot;http://u.to/_waxCA&quot; title=&quot;https://github.com/felis/USB_Host_Shield_2.0/archive/master.zip&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;This&lt;/a&gt; is a direct download link, but if you’d like to take a look around the repository go &lt;a class=&quot;link&quot; href=&quot;http://u.to/9gaxCA&quot; title=&quot;https://github.com/felis/USB_Host_Shield_2.0&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt; Install the library as you would any other (if you haven’t done this before see &lt;a class=&quot;link&quot; href=&quot;http://u.to/_gaxCA&quot; title=&quot;http://arduino.cc/en/Guide/Libraries&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;this&lt;/a&gt; page), and open the “PS3BT” example as I show in the video (&lt;b&gt;File –&gt; Examples –&gt; (Whatever you named the library) –&gt; Bluetooth –&gt; PS3BT&lt;/b&gt;). Remember that the Arduino doesn’t allow for dots (.) or dashes (-) in the library folder name, so when you download the library (which for some reason does have dots and dashes in its folder name) you will have to rename for the Arduino IDE to recognize it.If there is something I forgot to include here, or if you have a question about something in the video, please ask. &lt;br /&gt;&lt;br /&gt; ﻿&lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;/* Barrett Anderies &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;March 11, 2013 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;This is a modified version of the PS3BT.ino example sketch by Kristian Lauszus &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;For more information visit his blog: http&amp;#58;//blog.tkjelectronics.dk/ or&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;send him an e-mail:&amp;nbsp;&amp;nbsp;kristianl@tkjelectronics.com &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt;&lt;br /&gt; #include &lt;PS3BT.h&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;//Include the necessary libraries. &lt;br /&gt; #include &lt;Servo.h&gt; &lt;br /&gt;&lt;br /&gt; USB Usb; &lt;br /&gt; BTD Btd(&amp;Usb&amp;#41;; &lt;br /&gt; PS3BT PS3(&amp;Btd&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; Servo servo1;&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;//Create instances of type Servo. servo1 is the steering servo and servo2 is the ESC. &lt;br /&gt; Servo servo2; &lt;br /&gt;&lt;br /&gt; void setup(&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.begin(115200&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Usb.Init(&amp;#41; == -1&amp;#41; {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.print(F(&quot;&amp;#92;r&amp;#92;nOSC did not start&quot;&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(1&amp;#41;; //halt &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.print(F(&quot;&amp;#92;r&amp;#92;nPS3 Bluetooth Library Started&quot;&amp;#41;&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pinMode(3, OUTPUT&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pinMode(5, OUTPUT&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;servo1.attach(5&amp;#41;;&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;//Steering servo on digital pin 5 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;servo2.attach(3&amp;#41;;&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;//ESC on sigital pin 3 &lt;br /&gt; } &lt;br /&gt; void loop(&amp;#41;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Usb.Task(&amp;#41;; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(PS3.PS3Connected || PS3.PS3NavigationConnected&amp;#41; { &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;servo1.write(map(PS3.getAnalogHat(RightHatX&amp;#41;, 0, 255, 0, 180&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;servo2.write(map(PS3.getAnalogHat(LeftHatY&amp;#41;, 0, 255, 180, 0&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;servo1.write(90&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;servo2.write(90&amp;#41;; &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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(PS3.getButtonClick(PS&amp;#41;&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PS3.disconnect(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; }&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Arduino And C+ Programing</category>
			<dc:creator>sault73</dc:creator>
			<guid>https://decoder.ucoz.com/forum/4-9-1</guid>
		</item>
		<item>
			<title>ARDUINO SAINSMART 4WD ROBOT</title>
			<link>https://decoder.ucoz.com/forum/4-10-1</link>
			<pubDate>Tue, 26 Aug 2014 10:29:59 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;https://decoder.ucoz.com/forum/4&quot;&gt;Arduino And C+ Programing&lt;/a&gt;&lt;br /&gt;Thread starter: sault73&lt;br /&gt;Last message posted by: sault73&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>A while back I purchased the Sainsmart 4WD Arduino robot.  I had virtually zero experience building or programming an autonomous robot so I thought the project would be a great learning experience. &lt;br /&gt;&lt;br /&gt; &lt;!--IMG1--&gt;&lt;a href=&quot;http://decoder.ucoz.com/_fr/0/0986284.jpg&quot; class=&quot;ulightbox&quot; target=&quot;_blank&quot; title=&quot;Click to view in full size...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://decoder.ucoz.com/_fr/0/s0986284.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG1--&gt; &lt;br /&gt;&lt;br /&gt; The Kit includes a 4WD robot chassis, Arduino Mega 2560, L298N dual H Bridge driver, sensor shield, wiring and various other items needed. &lt;br /&gt;&lt;br /&gt; &lt;!--IMG2--&gt;&lt;a href=&quot;http://decoder.ucoz.com/_fr/0/0422340.jpg&quot; class=&quot;ulightbox&quot; target=&quot;_blank&quot; title=&quot;Click to view in full size...&quot;&gt;&lt;img alt=&quot;&quot; style=&quot;margin:0;padding:0;border:0;&quot; src=&quot;http://decoder.ucoz.com/_fr/0/s0422340.jpg&quot; align=&quot;&quot; /&gt;&lt;/a&gt;&lt;!--IMG2--&gt; &lt;br /&gt;&lt;br /&gt; I decided to document the builds and improvements from start to finish via my YouTube videos so others could benefit.  I guess they were pretty good because Sainsmart linked almost all of them to the product listings on their web page &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt;// robot.ino &lt;br /&gt; /*&amp;nbsp;&amp;nbsp;&lt;br /&gt; Following code by EricWillaim &lt;br /&gt; All build information, code and forum posts/discussion can be found at: &lt;br /&gt; http&amp;#58;//mkme.org &lt;br /&gt;&lt;br /&gt; Dedicated build page: &lt;br /&gt; http&amp;#58;//www.mkme.org/index.php/arduino-sainsmart-4wd-robot/ &lt;br /&gt;&lt;br /&gt; This is my attempt at programming the Sainsmart 4WD robot &lt;br /&gt; So far it now checks for a new direction periodically and performs &lt;br /&gt; backup and turn functions as in reaction to the environment it is presented. &lt;br /&gt; It is by far not optimized code- but works for now &lt;img src=&quot;http&amp;#58;//s41.ucoz.net/sm/24/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt; &lt;br /&gt; I will update this periodically as I get time to learn new methods and improve the code.&amp;nbsp;&amp;nbsp;&lt;br /&gt; Please check out my Youtube videos here and consider a thumbs up if this helped you! &lt;br /&gt; Youtube : http&amp;#58;//www.youtube.com/user/Shadow5549 &lt;br /&gt;&lt;br /&gt; Some portions of this code adapted from: &lt;br /&gt; http&amp;#58;//www.duino-robotics.com/ &lt;br /&gt;&lt;br /&gt; V9 Dec 12 2013: &lt;br /&gt; Added a forward distance check after turns- will continue to turn if distance still too small &lt;br /&gt; Minor Tweaks but still using delay functions &lt;br /&gt;&lt;br /&gt; V10 May 2014 &lt;br /&gt; Added support for Roam mode- serial commands will toggle roam versus individual driving commands &lt;br /&gt; */ &lt;br /&gt;&lt;br /&gt; #include &lt;Servo.h&gt; //servo library &lt;br /&gt; #include &quot;pitches.h&quot;// used for the speaker output &lt;br /&gt; #define SPEAKER 4// Speaker Pin &lt;br /&gt;&lt;br /&gt; Servo headservo; &lt;br /&gt; const int EchoPin = 2; // Ultrasonic signal input &lt;br /&gt; const int TrigPin = 3; // Ultrasonic signal output &lt;br /&gt; const int leftmotorpin1 = 8; //signal output of Dc motor driven plate &lt;br /&gt; const int leftmotorpin2 = 9; &lt;br /&gt; const int rightmotorpin1 = 6; &lt;br /&gt; const int rightmotorpin2 = 7; &lt;br /&gt; const int HeadServopin = 5; // signal input of headservo &lt;br /&gt; const int maxStart = 800; //run dec time- no clue what this is &lt;br /&gt; unsigned long time; //used for upcoming improvements (time used instead of loops&amp;#41; &lt;br /&gt; unsigned long time1; //used for upcoming improvements (time used instead of loops&amp;#41; &lt;br /&gt; int add= 0; //used for nodanger loop count &lt;br /&gt; int add1= 0;&amp;nbsp;&amp;nbsp;//used for nodanger loop count &lt;br /&gt; int roam = 1; &lt;br /&gt; int currDist = 5000; // distance &lt;br /&gt; boolean running = false;// This is from old code examples &lt;br /&gt;&lt;br /&gt; void setup(&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//initialize beeps &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C7, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(500&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C6, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C7, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(500&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C6, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C7, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(500&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C6, 100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//End Initialize Beeps &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; Serial.begin(9600&amp;#41;; // Enables Serial monitor for debugging purposes &lt;br /&gt; Serial.println(&quot;Serial Data Initiated!&quot;&amp;#41;; // Test the Serial communication &lt;br /&gt; pinMode(EchoPin, INPUT&amp;#41;;//signal input port &lt;br /&gt;&lt;br /&gt; //signal output port &lt;br /&gt; for (int pinindex = 3; pinindex &lt; 10; pinindex++&amp;#41; { &lt;br /&gt; pinMode(pinindex, OUTPUT&amp;#41;; // set pins 3 to 10 as outputs &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; // headservo interface &lt;br /&gt; headservo.attach(HeadServopin&amp;#41;; &lt;br /&gt; //start buffer movable head &lt;br /&gt; headservo.write(160&amp;#41;; &lt;br /&gt; delay(1000&amp;#41;; &lt;br /&gt; headservo.write(20&amp;#41;; &lt;br /&gt; delay(1000&amp;#41;; &lt;br /&gt; headservo.write(90&amp;#41;; &lt;br /&gt; delay(1000&amp;#41;; &lt;br /&gt; return; &lt;br /&gt; } &lt;br /&gt; void loop(&amp;#41;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (Serial.available(&amp;#41; &gt; 0&amp;#41;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int data = Serial.read(&amp;#41;;&amp;nbsp;&amp;nbsp;&amp;nbsp;//read serial input commands &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch(data&amp;#41; &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;case &apos;w&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.println(&quot;Rolling!&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;moveForward(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;case &apos;x&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;backup(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buzz(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;case &apos;a&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body_lturn(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buzz(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;case &apos;d&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body_rturn(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buzz(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;case &apos;s&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalhalt(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;case &apos;r&apos; :&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;toggleRoam(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;buzz(&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&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;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(roam == 0&amp;#41;{ //just listen to serial commands and wait &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Do something else if you like &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(roam == 1&amp;#41;{&amp;nbsp;&amp;nbsp;//If roam active- drive autonymously &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; //time = millis(&amp;#41;; // Sets &quot;time&quot; to current system time count &lt;br /&gt; currDist = MeasuringDistance(&amp;#41;; //measure front distance &lt;br /&gt; Serial.print(&quot;Current Forward Distance: &quot;&amp;#41;; &lt;br /&gt; //Serial.println(currDist&amp;#41;; &lt;br /&gt; if(currDist &gt; 35&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;add = (add1++&amp;#41;;// Start adding up the loop count done in nodanger &lt;br /&gt; nodanger(&amp;#41;; &lt;br /&gt; Serial.println(&quot;Nodanger: &quot;&amp;#41;; &lt;br /&gt; } &lt;br /&gt; else if(currDist &lt; 35&amp;#41;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//add=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.println(&quot;Forward Blocked- Decide Which Way&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;backup(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;whichway(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; //measure distance, unit “cm” &lt;br /&gt; long MeasuringDistance(&amp;#41; { &lt;br /&gt; long duration; &lt;br /&gt; //pinMode(TrigPin, OUTPUT&amp;#41;; &lt;br /&gt; digitalWrite(TrigPin, LOW&amp;#41;; &lt;br /&gt; delayMicroseconds(2&amp;#41;; &lt;br /&gt; digitalWrite(TrigPin, HIGH&amp;#41;; &lt;br /&gt; delayMicroseconds(5&amp;#41;; &lt;br /&gt; digitalWrite(TrigPin, LOW&amp;#41;; &lt;br /&gt; //pinMode(EchoPin, INPUT&amp;#41;; &lt;br /&gt; duration = pulseIn(EchoPin, HIGH&amp;#41;; &lt;br /&gt; return duration / 29 / 2; &lt;br /&gt; } &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; // forward &lt;br /&gt; void moveForward(&amp;#41; { &lt;br /&gt; analogWrite(leftmotorpin1, 0&amp;#41;;//Changed these to analog write for slower &lt;br /&gt; analogWrite(leftmotorpin2, 120&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin1, 0&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin2, 120&amp;#41;; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void toggleRoam(&amp;#41;{ &lt;br /&gt; if(roam == 0&amp;#41;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;roam = 1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.println(&quot;Activated Roam Mode&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;roam = 0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalhalt(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Serial.println(&quot;De-activated Roam Mode&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void nodanger(&amp;#41; { &lt;br /&gt; running = true;// Do I need these? &lt;br /&gt; analogWrite(leftmotorpin1, 0&amp;#41;;//Changed these to analog write for slower &lt;br /&gt; analogWrite(leftmotorpin2, 120&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin1, 0&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin2, 120&amp;#41;; &lt;br /&gt; if (add1 &gt; 38 &amp;#41; whichway(&amp;#41;; // Robot will stop and check direction every X loops through nodanger then resets in totalhalt (40 is good&amp;#41; &lt;br /&gt; return; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; //backward &lt;br /&gt; void backup(&amp;#41; { &lt;br /&gt; add1=0; // resets the counter for the nodanger loops &lt;br /&gt; running = true;//Do I need these? &lt;br /&gt; digitalWrite(leftmotorpin1, HIGH&amp;#41;; &lt;br /&gt; digitalWrite(leftmotorpin2, LOW&amp;#41;; &lt;br /&gt; digitalWrite(rightmotorpin1, HIGH&amp;#41;; &lt;br /&gt; digitalWrite(rightmotorpin2, LOW&amp;#41;; &lt;br /&gt; Serial.println(&quot;Backing Up&quot;&amp;#41;; &lt;br /&gt; fart(&amp;#41;; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; //choose which way to turn &lt;br /&gt; void whichway(&amp;#41; { &lt;br /&gt; running = true;//Do I need these? &lt;br /&gt; totalhalt(&amp;#41;; &lt;br /&gt; headservo.write(160&amp;#41;; &lt;br /&gt; delay(900&amp;#41;; &lt;br /&gt; int lDist = MeasuringDistance(&amp;#41;; // check left distance &lt;br /&gt; Serial.println(&quot;checking left&quot;&amp;#41;; &lt;br /&gt; Serial.println(lDist&amp;#41;; &lt;br /&gt; headservo.write(20&amp;#41;; // turn the servo right &lt;br /&gt; delay(900&amp;#41;; &lt;br /&gt; int rDist = MeasuringDistance(&amp;#41;; // check right distance &lt;br /&gt; Serial.println(&quot;checking right&quot;&amp;#41;; &lt;br /&gt; Serial.println(rDist&amp;#41;; &lt;br /&gt; //totalhalt(&amp;#41;; //&amp;nbsp;&amp;nbsp;Do I need this???&amp;nbsp;&amp;nbsp;Used to be used to centre the servo &lt;br /&gt; if(lDist &lt; rDist&amp;#41; { &lt;br /&gt; Serial.println(&quot;Decided Right Is Best&quot;&amp;#41;; &lt;br /&gt; buzz(&amp;#41;;// Make him talk &lt;br /&gt; body_rturn(&amp;#41;; &lt;br /&gt; totalhalt(&amp;#41;; &lt;br /&gt; currDist = MeasuringDistance(&amp;#41;; //measure front distance &lt;br /&gt; if(currDist &lt; 45&amp;#41; body_rturn(&amp;#41;;&amp;nbsp;&amp;nbsp;//if front distance still too small- turn again &lt;br /&gt; } &lt;br /&gt; else{ &lt;br /&gt; Serial.println(&quot;Decided Left Is Best&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;buzz(&amp;#41;;// Make him talk &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;body_lturn(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalhalt(&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;currDist = MeasuringDistance(&amp;#41;; //measure front distance &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(currDist &lt; 45&amp;#41; body_lturn(&amp;#41;;// if front distance still too small- turn again &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; return; &lt;br /&gt; }&amp;nbsp;&amp;nbsp;&lt;br /&gt;&lt;br /&gt; void totalhalt(&amp;#41; { &lt;br /&gt; digitalWrite(leftmotorpin1, HIGH&amp;#41;; &lt;br /&gt; digitalWrite(leftmotorpin2, HIGH&amp;#41;; &lt;br /&gt; digitalWrite(rightmotorpin1, HIGH&amp;#41;; &lt;br /&gt; digitalWrite(rightmotorpin2, HIGH&amp;#41;; &lt;br /&gt; Serial.println(&quot;Totalhalt!&quot;&amp;#41;; &lt;br /&gt; headservo.write(90&amp;#41;; // set servo to face forward &lt;br /&gt; delay(250&amp;#41;; &lt;br /&gt; running = false;//Do I need these? &lt;br /&gt; add1=0; // resets the counter for the nodanger loops &lt;br /&gt; return; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; //turn left &lt;br /&gt; void body_lturn(&amp;#41; { &lt;br /&gt; running = true; &lt;br /&gt; analogWrite(leftmotorpin1, 0&amp;#41;; &lt;br /&gt; analogWrite(leftmotorpin2, 220&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin1, 220&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin2, 0&amp;#41;; &lt;br /&gt; Serial.println(&quot;Turning Left&quot;&amp;#41;; &lt;br /&gt; delay(400&amp;#41;; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; //turn right &lt;br /&gt; void body_rturn(&amp;#41; { &lt;br /&gt; running = true; &lt;br /&gt; analogWrite(leftmotorpin1, 220&amp;#41;; &lt;br /&gt; analogWrite(leftmotorpin2, 0&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin1, 0&amp;#41;; &lt;br /&gt; analogWrite(rightmotorpin2, 220&amp;#41;; &lt;br /&gt; Serial.println(&quot;Turning Right&quot;&amp;#41;; &lt;br /&gt; delay(400&amp;#41;; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void buzz(&amp;#41;{ &lt;br /&gt; tone(SPEAKER, NOTE_C7, 100&amp;#41;; &lt;br /&gt; delay(50&amp;#41;; &lt;br /&gt; tone(SPEAKER, NOTE_C6, 100&amp;#41;; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void fart(&amp;#41;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C2, 200&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;delay(50&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;tone(SPEAKER, NOTE_C1, 400&amp;#41;;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;delay(100&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;noTone(SPEAKER&amp;#41;; &lt;br /&gt; }&lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt;</content:encoded>
			<category>Arduino And C+ Programing</category>
			<dc:creator>sault73</dc:creator>
			<guid>https://decoder.ucoz.com/forum/4-10-1</guid>
		</item>
	</channel>
</rss>