/* Rolly_Robot Pro Mini 18 July 2014 JDS IR Codes for DVR Remote 16720350 MULT 16763190 POWER 16716270 SEARCH 16714230 |< 16718310 ||< 16724430 |> 16728510 >|| 16726470 >> 16761150 >| 16771350 ADD 16746870 FN 16742790 MENU 16767270 LEFT 16750950 RIGHT 16755030 UP 16734630 DOWN 16769310 1 16736670 2 16752990 3 16765230 4 16732590 5 16748910 6 16773390 7 16740750 8 16757070 9 16730550 0 16738710 ESC 16722390 -/-- Repeat 4294967295 Left servo pin 10 Right servo pin 11 IR is on pin 12 The IR sensor's pins to Arduino like so: Pin 1 to Vout (pin 12 on Arduino) Pin 2 to GND Pin 3 to Vcc (+5v from Arduino) */ #include #include int IRpin = 12; // pin for the IR sensor int LED = 13; // LED pin IRrecv irrecv(IRpin); decode_results results; unsigned long PrevResult; Servo servoRight; int servoRightZero = 1500; int servoRightDirection = -1; Servo servoLeft; int servoLeftZero = 1500; int servoLeftDirection = 1; int Speed = 50; int rightSpeed = 0; int leftSpeed = 0; void setup() { irrecv.enableIRIn(); // Start the receiver Serial.begin(9600); } void loop() { digitalWrite(LED, LOW); if (irrecv.decode(&results)) { Serial.println(PrevResult); digitalWrite(LED, HIGH); switch (results.value) { case 16755030://forward PrevResult = 16755030; servoRight.attach(11); servoLeft.attach(10); Serial.println("Forward"); servoRightDirection = -1; servoLeftDirection = 1; rightSpeed = Speed; leftSpeed = Speed; break; case 16742790://stop PrevResult = 16742790; Serial.println("Stop"); //rightSpeed = 0; //leftSpeed = 0; servoRight.detach(); servoLeft.detach(); break; case 16734630://backward PrevResult = 16734630; servoRight.attach(11); servoLeft.attach(10); Serial.println("Backward"); servoRightDirection = 1; servoLeftDirection = -1; rightSpeed = Speed; leftSpeed = Speed; break; case 16767270://left PrevResult = 16767270; servoRight.attach(11); servoLeft.attach(10); Serial.println("Left turn"); rightSpeed = Speed; leftSpeed = Speed / 2; break; case 16750950://right PrevResult = 16750950; servoRight.attach(11); servoLeft.attach(10); Serial.println("Right turn"); rightSpeed = Speed / 2; leftSpeed = Speed; break; case 16771350://ADD PrevResult = 16771350; servoRight.attach(11); servoLeft.attach(10); Serial.println("Left Dime"); servoRightDirection = -1; servoLeftDirection = -1; rightSpeed = Speed; leftSpeed = Speed; break; case 16746870://FN PrevResult = 16746870; servoRight.attach(11); servoLeft.attach(10); Serial.println("Right Dime"); servoRightDirection = 1; servoLeftDirection = 1; rightSpeed = Speed; leftSpeed = Speed; break; case 16718310://||< Slower PrevResult = 16718310; Serial.print("Slower "); if (Speed >= 10) { Speed = Speed - 10; } rightSpeed = Speed; leftSpeed = Speed; Serial.println(Speed); break; case 16726470://>> Faster PrevResult = 16726470; Serial.print("Faster "); if (Speed < 120) { Speed = Speed + 10; } rightSpeed = Speed; leftSpeed = Speed; Serial.println(Speed); break; case 4294967295:// repeat if (PrevResult == 16718310) //slower { if (Speed >= 10) { Speed = Speed - 10; delay(250);//blocking delay to slow speed change } rightSpeed = Speed; leftSpeed = Speed; } if (PrevResult == 16726470) //faster { if (Speed < 120) { Speed = Speed + 10; delay(250);//blocking delay to slow speed change } rightSpeed = Speed; leftSpeed = Speed; } break; } servoLeft.writeMicroseconds(servoLeftZero + leftSpeed * servoLeftDirection); servoRight.writeMicroseconds(servoRightZero + rightSpeed * servoRightDirection); irrecv.resume(); } }