arduino mega + adafruit motor shield + 433 MHz module

Hi,
I have some problems controlling 2 motors with a compatible arduino mega and the adafruit motor shield. I control it with a 433 MHz module. Trying with an arduino uno I have no problems but with the mega the motors don’t start. If I delete from the sketch the instruction related to the 433 MHz module one of the motors works but not the other.

Here is the sketch:

#include <AFMotor.h>
#include <VirtualWire.h>

/SETTAGGIO MOTORI/

AF_DCMotor motorA(1, MOTOR12_64KHZ);
AF_DCMotor motorB(2, MOTOR12_64KHZ);

AF_DCMotor ledA(3, MOTOR12_1KHZ);
AF_DCMotor ledB(4, MOTOR12_1KHZ);

/SETTAGGIO PIN E VARIABILI/
int speedM = 120;
int lumL = 150;
int pause = 150;

const int RX_DIO_Pin = A5;

int received;
int done = 0;

void setup(){

Serial.begin(9600);
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);

ledA.setSpeed(lumL);
ledB.setSpeed(lumL);

initialize_receiver(); <--------------------------------------------------If I delete this one motor works

//TEST MOTORI

speedM = 50;
motorA.run(FORWARD);
delay(1000);
motorB.run(FORWARD);
while(speedM < 150){
speedM = speedM+10;
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
delay(100);}

delay(500);
motorA.run(RELEASE);
delay(1000);
motorB.run(RELEASE);
delay(2000);

}
void loop(){
received = receive_integer();

if(received != -1)
Serial.println(received);

/CONTROLLO COMANDI/
switch (received){

case 50:
Serial.println(“Avanti”);
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
motorA.run(FORWARD);
motorB.run(FORWARD);
delay(pause);
break;

case 51:
//Serial.println(“Indietro”);
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
motorA.run(BACKWARD);
motorB.run(BACKWARD);
delay(pause);
break;

case 52:
//Serial.println(“Destra”);
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
motorA.run(FORWARD);
motorB.run(BACKWARD);
delay(pause);
break;

case 53:
//Serial.println(“Sinistra”);
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
motorA.run(BACKWARD);
motorB.run(FORWARD);
delay(pause);
break;

case 54:
//Serial.println(“Destra in corsa”);
motorA.setSpeed((speedM/100)*170);
motorB.setSpeed((speedM/100)*30);
motorA.run(FORWARD);
motorB.run(FORWARD);
delay(pause);
break;

case 55:
//Serial.println(“Sinistra in corsa”);
motorA.setSpeed((speedM/100)*30);
motorB.setSpeed((speedM/100)*170);
motorA.run(FORWARD);
motorB.run(FORWARD);
delay(pause);
break;

case 56:
//Serial.println(“Gestione velocità”);
delay(10);
while(done == 0){
received = 500;
received = receive_integer();
if(received>=0 && received <= 255){
done = 1;
speedM = received;
}
}
motorA.setSpeed(speedM);
motorB.setSpeed(speedM);
done = 0;
break;

case 57:
//Serial.println(“Accenzione luci”);
ledA.run(FORWARD);
ledB.run(FORWARD);
break;

case 58:
//Serial.println(“Spegnimento luci”);
ledB.run(RELEASE);
ledB.run(RELEASE);
break;

case 59:
//Serial.println(“Gestione luminosità luci”);
delay(10);
while(done == 0){
received = 500;
received = receive_integer();
if(received>=0 && received <= 255){
done = 1;
lumL = received;
}
}
ledA.setSpeed(lumL);
ledB.setSpeed(lumL);
done = 0;
break;

default:
//Serial.println(“Stop”);
motorA.run(RELEASE);
motorB.run(RELEASE);
}
}

void initialize_receiver() {
/* Initialises the DIO pin used to receive data from the Rx module /
vw_set_rx_pin(RX_DIO_Pin);
/
Receive at 2000 bits per second /
vw_setup(4000);
/
Enable the receiver */
vw_rx_start();
}

int receive_integer() {
/* Set the receive buffer size to 2 bytes */
uint8_t Buffer_Size = 2;

/* Holds the recived data */
unsigned int Data;

/* The receive buffer */
uint8_t RxBuffer[Buffer_Size];

/* Has a message been received? */
if (vw_get_message(RxBuffer, &Buffer_Size)) // Non-blocking
{

/* Store the received high and low byte data */
Data = RxBuffer[0] << 8 | RxBuffer[1];

return Data;
}
return -1;
}