Newbie in need of help for IR Controlled Robot

Hello, I'm trying to make a robot controlled by an IR remote. I've been trying to make it work for days but 3rd and 4th motor dont seem to work and I also can't change the directions of the ones that work.

Here's the code:

#include<IRremote.h>

const int RemotePin=8;
IRrecv irrecv(RemotePin);
decode_results results;
int in1=3;
int in2=5;
int in3=6;
int in4=9;
int enA=10;
int enB=11;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
  pinMode(enA, OUTPUT);
  pinMode(enB, OUTPUT);
    
}

void loop() {
  
    if(irrecv.decode(&results))
      {
       if (results.value==0xFF18E7)//Press UP Button
       { 
         Forward();
       }

       else if (results.value==0xFF4AB5)//Press Down Button
       { 
         Backward();
       }
        
       else if (results.value==0xFF10EF)//Press Left Button
       { 
         Left();
       }

       else if (results.value==0xFF5AA5)//Press Right Button
       { 
         Right();
       }

       else if (results.value==0xFF38C7)//Stop
       { 
         Stop();
       }
      irrecv.resume();
   }
 }
   
 void Forward()
  {
    digitalWrite(in1,HIGH);
    digitalWrite(in2,LOW);
    digitalWrite(in3,HIGH);
    digitalWrite(in4,LOW);
    analogWrite(enA, 150);
    analogWrite(enB, 150);
  }

 void Backward()
  {
    digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
    digitalWrite(in3,LOW);
    digitalWrite(in4,HIGH);
    analogWrite(enA, 150);
    analogWrite(enB, 150);
  }
 
 void Right()
  {
    digitalWrite(in1,LOW);
    digitalWrite(in2,HIGH);
    digitalWrite(in3,HIGH);
    digitalWrite(in4,LOW);
    analogWrite(enA, 150);
    analogWrite(enB, 150);
  }

 void Left()
  {
    digitalWrite(in1,HIGH);
    digitalWrite(in2,LOW);
    digitalWrite(in3,LOW);
    digitalWrite(in4,HIGH);
    analogWrite(enA, 150);
    analogWrite(enB, 150);
  }

 void Stop()
  {
    digitalWrite(in1,LOW);
    digitalWrite(in2,LOW);
    digitalWrite(in3,LOW);
    digitalWrite(in4,LOW);
    analogWrite(enA, 0);
    analogWrite(enB, 0);
   
  }


Pin 11 (neither 3) can't be used for analogWrite while using IRremote library.
Also I suggest to update to newest version and #include <IRremote.hpp>.

1 Like

Thank you, it works now!

You're welcome.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.