Help using VirtualWire and Servo

Well, thanks to the incrdible users out there, I’m excited to introduce a weird problem I am having at the moment. I’ve setup a easy virtualwire connection with:
RF transmittors: http://www.dx.com/p/433mhz-rf-transmitter-module-receiver-module-link-kit-for-arduino-arm-mcu-wl-green-220194#.U960AXgZWb4
Tower Pro micro SG90 Servos

Setup is pretty easy, the problem is that connecting the Servo SG90 the virtual wire connection gets stuck, and when I disconnect from the PIN the connection runs very well and expected.
Using another Servo, not the SG90 ones (http://www.servodatabase.com/servo/springrc/sm-s2309s), it works as expected everything…

The Servo SG90 works maybe the two-three first connections but then gets stuck. Its functionality with nromal wired is excellent and no problem with those…

I’ll attach the code I’m currently using for the Transmitter and the Reciever:

RECIEVER CODE

#include <VirtualWire.h>
#include <ServoTimer2.h>

String angleString;
String angle;
int angleDigit;
ServoTimer2 servoMotor;

void setup()
{
  Serial.begin(9600); 
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_rx_pin(7);
  vw_rx_start();
  
  servoMotor.attach(3);
}

void loop()
{
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  
  uint8_t buf[buflen];;
  
  if(vw_get_message(buf, &buflen))
  {
    for(int i = 0; i < buflen; i++)
    {
        angleDigit = int(buf[i]) - 48;
        angle += String(angleDigit);
    }
    
    char angleChar[angle.length()];
    angle.toCharArray(angleChar,angle.length());
  
  for (int i = 0; i < angleChar.lenght; i++) {
    angleString += angleChar[i];
  }
  // To microseconds
  servoMotor.write(map(angleString.toInt(), 0, 180, 500, 2400));

  angle = "";
  angleString[i] = "";
}

TRANSMITTER CODE

#include <VirtualWire.h>

int sensor;
String angleString;

void setup()
{
  Serial.begin(9600);
  
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_tx_pin(6);
  
  pinMode(A0, INPUT);
}

void loop()
{
  sensor = analogRead(A0);

  int angle = map(sensor, 0, 1023, 0, 180);

  if (angle < 100) {
    if (angle < 10) {
      angleString = "00";
    }
    else {
      angleString = "0";
    }
    angleString += (String) angle;
  }
  else {
    angleString = (String) angle;
  }

  const char *angleChar = angleString.c_str();
  vw_send((uint8_t *)angleChar, strlen(angleChar));
  vw_wait_tx();
  
  angleString = "";
  
  delay(100);
}

Any help is appreciated and respected of course! As said, the towerpro servor connected to pin 3 (or other attached) it stuck the reciever program, while the other Servo doesn’t. I need those towerpro servor to work! Thanks for the help

One thing to consider:

http://www.airspayce.com/mikem/arduino/VirtualWire/
“This VirtualWire library has now been superceded by the RadioHead library http://www.airspayce.com/mikem/arduino/RadioHead RadioHead and its RH_ASK driver provides all the features supported by VirtualWire, and much more besides, including Reliable Datagrams, Addressing, Routing and Meshes. All the platforms that VirtualWire supported are also supported by RadioHead.”

How are you powering the servo? Many servo problem happen because they can draw more power than the +5V pin can supply.

johnwasser:
One thing to consider:

VirtualWire: VirtualWire library for Arduino and other boards
"This VirtualWire library has now been superceded by the RadioHead library RadioHead: RadioHead Packet Radio library for embedded microprocessors RadioHead and its RH_ASK driver provides all the features supported by VirtualWire, and much more besides, including Reliable Datagrams, Addressing, Routing and Meshes. All the platforms that VirtualWire supported are also supported by RadioHead."

How are you powering the servo? Many servo problem happen because they can draw more power than the +5V pin can supply.

I didn't know virtualwire was deprecated, and well I should try that for sure. I'm powering the servo from the 5v arduino supply, it worked with wired, but maybe is giving problems as I have to power up the RF reciever too... Any recomendations to make a power supply external of 5v?

If you still have problems after using the newer virtualwire library you might consider using the ServoTimer2 library to replace the standard servo library.

...R

Robin2:
If you still have problems after using the newer virtualwire library you might consider using the ServoTimer2 library to replace the standard servo library.

...R

Okey, I've discovered some things. Now I have VirtualWire (old) and ServoTimer2 working and sending the values I want. The problem was that the Servo (SG90 mini) didn't worked or get stucked, and with other servo it worked. I changed the power supply to use another Arudino (not the reciever) and it worked ok, so I think problem now is the power supply of the servos.

The problem of those servos are that they need 5v to get powered. I've tried with 4.5 and no... So now I need some help to create a 5v external power supply, thanksñ