<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://bloominglabs.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://bloominglabs.org/index.php?title=RhinoBeetleRemote&amp;feed=atom&amp;action=history</id>
		<title>RhinoBeetleRemote - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://bloominglabs.org/index.php?title=RhinoBeetleRemote&amp;feed=atom&amp;action=history"/>
		<link rel="alternate" type="text/html" href="http://bloominglabs.org/index.php?title=RhinoBeetleRemote&amp;action=history"/>
		<updated>2013-05-24T10:26:36Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.20.2</generator>

	<entry>
		<id>http://bloominglabs.org/index.php?title=RhinoBeetleRemote&amp;diff=475&amp;oldid=prev</id>
		<title>Sdcharle: New page: Here's some code that adds remote-control capability to the Tamiya Rhino Beetle. Uses Arduino, Motor shield, and an I/R receiver from Radio Shack.   &lt;nowiki&gt; /* Rhino Beetle! 20-3-2011 SDC...</title>
		<link rel="alternate" type="text/html" href="http://bloominglabs.org/index.php?title=RhinoBeetleRemote&amp;diff=475&amp;oldid=prev"/>
				<updated>2011-03-27T21:41:52Z</updated>
		
		<summary type="html">&lt;p&gt;New page: Here&amp;#039;s some code that adds remote-control capability to the Tamiya Rhino Beetle. Uses Arduino, Motor shield, and an I/R receiver from Radio Shack.   &amp;lt;nowiki&amp;gt; /* Rhino Beetle! 20-3-2011 SDC...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Here's some code that adds remote-control capability to the Tamiya Rhino Beetle. Uses Arduino, Motor shield, and an I/R receiver from Radio Shack.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
Rhino Beetle!&lt;br /&gt;
20-3-2011 SDC&lt;br /&gt;
&lt;br /&gt;
motors 3 and 4 3 is left (red, white)&lt;br /&gt;
4 is right (blue, yellow)&lt;br /&gt;
&lt;br /&gt;
other pins - analog 0-5 are available.&lt;br /&gt;
&lt;br /&gt;
analog is across analog 0,1,2 (vcc, gnd, signal)&lt;br /&gt;
&lt;br /&gt;
have to use 3 and 4 b/c IR thing interferes w/ timer/pwm for 1 and 2 on the shield&lt;br /&gt;
&lt;br /&gt;
 */&lt;br /&gt;
#include &amp;lt;AFMotor.h&amp;gt;&lt;br /&gt;
#include &amp;lt;IRremote.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int RECV_PIN = 16; // aka analog 2 11;&lt;br /&gt;
// using motor 3 and 4, I think otherwise IR code interferes.&lt;br /&gt;
AF_DCMotor motor2(4, MOTOR12_2KHZ); // create motor #2, 2KHz pwm can do 64,8,2,1&lt;br /&gt;
AF_DCMotor motor1(3, MOTOR12_2KHZ);&lt;br /&gt;
IRrecv irrecv(RECV_PIN);&lt;br /&gt;
decode_results results;&lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
the apple remote codes!&lt;br /&gt;
plus (fwd): 77E15064&lt;br /&gt;
minus (bkwd): 77E13064&lt;br /&gt;
play (stop): 77E1A064&lt;br /&gt;
rew (left): 77E19064&lt;br /&gt;
ffwd (right): 77E16064&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
const long FORWARD_STATE =  0x77E15064;&lt;br /&gt;
const long BACKWARD_STATE = 0x77E13064;&lt;br /&gt;
const long STOP_STATE =  0x77E1A064;&lt;br /&gt;
const long LEFT_STATE = 0x77E19064;&lt;br /&gt;
const long RIGHT_STATE = 0x77E16064;&lt;br /&gt;
const long IGNORE_CODE = 0xFFFFFFFF;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
long current_state = STOP_STATE;&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  // send a 1 to the vcc, 0 to ground&lt;br /&gt;
  pinMode(14, OUTPUT);&lt;br /&gt;
  digitalWrite(14,HIGH);&lt;br /&gt;
  pinMode(15, OUTPUT);&lt;br /&gt;
  digitalWrite(15,LOW);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  irrecv.enableIRIn(); // Start the receiver&lt;br /&gt;
  // might want below to be faster or varying&lt;br /&gt;
  motor1.setSpeed(255);     // set the speed to 200/255 // this is pretty slow w/ the beetle thingy&lt;br /&gt;
  motor2.setSpeed(255);&lt;br /&gt;
  //robot_forward();&lt;br /&gt;
  Serial.println(&amp;quot;it's time to goooooo....&amp;quot;);&lt;br /&gt;
  delay(2000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void robot_forward() {&lt;br /&gt;
  motor1.run(BACKWARD);&lt;br /&gt;
  motor2.run(BACKWARD); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void robot_backward() {&lt;br /&gt;
  motor1.run(FORWARD);&lt;br /&gt;
  motor2.run(FORWARD);   &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void robot_left() {&lt;br /&gt;
  motor1.run(FORWARD);&lt;br /&gt;
  motor2.run(BACKWARD); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void robot_right() {&lt;br /&gt;
  motor1.run(BACKWARD);&lt;br /&gt;
  motor2.run(FORWARD);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void robot_stop() {&lt;br /&gt;
    motor1.run(RELEASE);&lt;br /&gt;
    motor2.run(RELEASE); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  if (irrecv.decode(&amp;amp;results)) {&lt;br /&gt;
    Serial.println(results.value, HEX);&lt;br /&gt;
    if ((results.value != IGNORE_CODE) &amp;amp;&amp;amp; (results.value != current_state)) {&lt;br /&gt;
      switch(results.value) {&lt;br /&gt;
        case FORWARD_STATE:&lt;br /&gt;
          Serial.println(&amp;quot;go forward!&amp;quot;);&lt;br /&gt;
          robot_forward();&lt;br /&gt;
          break;&lt;br /&gt;
        case BACKWARD_STATE:&lt;br /&gt;
          Serial.println(&amp;quot;go back!&amp;quot;);&lt;br /&gt;
          robot_backward();&lt;br /&gt;
          break;&lt;br /&gt;
        case LEFT_STATE:&lt;br /&gt;
          Serial.println(&amp;quot;go left!&amp;quot;);&lt;br /&gt;
          robot_left();&lt;br /&gt;
          break;&lt;br /&gt;
        case RIGHT_STATE:&lt;br /&gt;
         Serial.println(&amp;quot;go right!&amp;quot;);&lt;br /&gt;
         robot_right();&lt;br /&gt;
         break;&lt;br /&gt;
        case STOP_STATE:&lt;br /&gt;
         Serial.println(&amp;quot;stop dammit!&amp;quot;);&lt;br /&gt;
         robot_stop();&lt;br /&gt;
         break;&lt;br /&gt;
      }&lt;br /&gt;
      current_state = results.value;&lt;br /&gt;
    }&lt;br /&gt;
    irrecv.resume(); // Receive the next value&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sdcharle</name></author>	</entry>

	</feed>