Problema Sensor infrarrojo Proximidad Sharp

Hola a todos. Estoy haciendo un proyecto en el cual mediante un sensor IR muevo un coche tele-dirigido.
El problema está cuando quiero que mediante unos sensores Sharp de proximidad esquive objetos, pero no lo hace. Creo que esto es debido a que en defino el motor como si fuera un PIN y también como un motor. Separando el código funcionan las dos cosas pero al juntarlo da ese fallo.
Gracias de antemano.
A continuación os pongo el código.

#include <Servo.h>
#include <Arduino.h>
#include <NECIRrcv.h>

#define IRPIN A5 //Pin analog 5 sensor IR
#define senr A1
#define senl A0

Servo servoD;
Servo servoI;

NECIRrcv ir(IRPIN) ;
unsigned long ircode ;

int valizq= 0;
int valder= 0;
int motl= 7;
int motr= 8;

void setup()
{
pinMode(motl, OUTPUT);
pinMode(motr, OUTPUT);
servoD.attach(7);
servoI.attach( 8);

ir.begin() ;
}
void adelante ()
{
digitalWrite(motl,HIGH);
delayMicroseconds(1000);
digitalWrite(motl,LOW);
digitalWrite(motr,HIGH);
delayMicroseconds(2000);
digitalWrite(motr,LOW);
delayMicroseconds(20000);
}
void atras ()
{
digitalWrite(motr,HIGH);
delayMicroseconds(1000);
digitalWrite(motr,LOW);
digitalWrite(motl,HIGH);
delayMicroseconds(2000);
digitalWrite(motl,LOW);
delayMicroseconds(20000);
}
void derecha ()
{
digitalWrite(motl,HIGH);
delayMicroseconds(2000);
digitalWrite(motl,LOW);
digitalWrite(motr,HIGH);
delayMicroseconds(2000);
digitalWrite(motr,LOW);
delayMicroseconds(20000);
}
void izquierda ()
{
digitalWrite(motr,HIGH);
delayMicroseconds(2000);
digitalWrite(motr,LOW);
digitalWrite(motl,HIGH);
delayMicroseconds(2000);
digitalWrite(motl,LOW);
delayMicroseconds(20000);
}
void loop()
{

while (ir.available()) {

ircode = ir.read() ;

switch(ircode){

case 4144561665: //pulsar 2 avanza
servoD.write(80);
servoI.write(100);
break;

case 4010868225: //pulsar 8 retrocede
servoD.write(100);
servoI.write(80);
break;

case 4077714945: //pulsar 5 para parar
servoD.write(90);
servoI.write(90);
break;

case 4278255105: //pulsar 6 gira derecha
servoD.write(90);
servoI.write(100);

break;

case 3810328065: //pulsar 4 gira izquierda
servoD.write(80);
servoI.write(90);
break;

case 4177985025: //pulsar 3 gira derecha mientras avanza
servoD.write(85);
servoI.write(100);
break;

case 4161273345: //pulsar 1 gira izquierda mientras avanza
servoD.write(80);
servoI.write(95);
break;

case 4027579905: //pulsar 7 gira izquierda mientras retrocede
servoD.write(100);
servoI.write(85);
break;

case 4044291585: //pulsar 9 gira derecha mientras retrocede
servoD.write(95);
servoI.write(80);
break;

case 4244831745: //pulsar
valizq=analogRead (senl);
valder=analogRead (senr);
if(valder>400&&valizq>400)
{
atras();
}
else
{
if(valder>400)
{
izquierda();
}
else
{
if(valizq>400)
{
derecha();
}
else
{
adelante(); } }}
break;

}}
}