SOLUCIONADO Comunicación Serie Xbee con Visual Studio

Saludos a toda la comunidad, Les comento mi situación. Tengo un programa en Visual Studio el cual envía cada 50 milisegundos con un Timer un dato por el puerto serie a través de un módulo Xbee conectado al PC. Este dato es un número, que puede ser 0,180,90, o 270... no importa un número.... este número varía según la posición de las flechas (Point Of View) de un joystick USB también conectado al PC, por ejemplo si presiono la tecla superior me devuelve un "0" y con la inferior un "180" en Visual Studio. Este dato (0,180, o etc..) es enviado a mi placa Arduino Mega ADK vía radiofrecuencia la cual tiene otro módulo Xbee.

Mi idea es que a medida que llegue este dato se incremente (con el dato "0") y se decremente (con el dato "180") una variable, la cual luego utilizo para darle la posición a un servo, el cual forma parte de una pinza robótica. Actualmente estoy realizando el código de prueba en Arduino con una tira LED RGB no con un servo, pero es SOLO DE PRUEBA. El código final sera con un servo.

El problema que tengo es que de ninguna manera consigo hacer incrementar o decrementar esa variable o al menos eso es lo que refleja la tira LED RGB. Es importante aclarar que no solo el código de Arduino quiero que realice lo descrito anteriormente sino que también reciba los datos de los analógicos del joystick(estos son enviados cada 100 milisegundos con otro Timer en Visual Studio) para controlar 4 motores DC con dos C.I. L298. Esta parte funciona bien, aunque de vez en cuando el programa se queda "pegado", y aqui es a donde quiero llegar, ya que en mi opinión es que se satura el buffer o se satura el programa de Arduino por la cantidad de cosas que tiene que hacer (aunque muchas son sencillas pero debido a las funciones tales como digitalWrite se demora mucho la placa en ejecutarlas). Quisiera que me ayuden a como hacer el programa de Arduino más "fluido" y con lo de incrementar y decrementar la variable. Tal vez con una librería como la de digitalWriteFast pero la verdad no la conozco muy bien ya que nunca he trabajado con ella, ya probé con aumentar el baud rate a 115200, con aumentar el intervalo de los Timers en Visual Studio y sigo sin conseguir buenos resultados. También probé con funciones sencillas como por ejemplo que cuando el Arduino reciba un "180" se encienda la tira LED de color rojo pero no respondía bien... a veces encendía y aveces no y se quedaba "pegado" el programa. En cuanto al hardware es sencillo así que descarto que el problema venga de allí. Aquí el codigo:

int EnA = 8; //PWM drive train left
int EnB = 9; //PWM drive train left
int EnC = 10; //PWM drive train rigth
int EnD = 11; //PWM drive train rigth
//
int InA = 30; //giro M1 tren IZQ
int InA1 = 31; //giro M1 tren IZQ
int InB = 32; //giro M2 tren izq
int InB1 = 33; //giro M2 tren izq
int InC = 34; //giro M3 tren DER
int InC1 = 35; //giro M3 tren DER
int InD = 36; //giro M4 tren der
int InD1 = 37; //giro M4 tren der

int red = 5;//simulacion servo
int green = 6;
int blue = 7;

void setup() {
  Serial.begin(115200);
  pinMode(EnA, OUTPUT); pinMode(EnB, OUTPUT);  //PWM
  pinMode(EnC, OUTPUT); pinMode(EnD, OUTPUT);  //PWM
  pinMode(InA, OUTPUT); pinMode(InA1, OUTPUT); //Salidas de control de giro
  pinMode(InB, OUTPUT); pinMode(InB1, OUTPUT);
  pinMode(InC, OUTPUT); pinMode(InC1, OUTPUT);
  pinMode(InD, OUTPUT); pinMode(InD1, OUTPUT);
 pinMode(red, OUTPUT); pinMode(green, OUTPUT);
 pinMode(blue, OUTPUT);
}
void loop() {
  // startsWith() checks to see if a String starts with a particular substring:
if (Serial.available()){
  int dato = Serial.read();
  if (dato == '0'){ //enviado desde visual cada 50mseg
    int x= x+1;     //incrementar variable
  // min(x,180); //devuelve el num mas pequeño de los dos
   constrain(x,0,180);
   analogWrite(red, x);
    //servo.write(x);
   }
 if (dato == '180'){
int c = c--; //decrementar variable
   min(c, 180);
  //servo1.write(x);
analogWrite(blue, c);
}
 int  izquierda = Serial.parseInt(); 
 int izquierda1 = Serial.parseInt();
 int derecha = Serial.parseInt();   //lectura de enteros para los motores (PWM)
 int derecha1 = Serial.parseInt();
int estadoM1 = Serial.parseInt();
int estadoM1A = Serial.parseInt();
int estadoM2 = Serial.parseInt();  
int estadoM2A = Serial.parseInt();  //lectura de enteros de estado de giro de motores
int estadoM3 = Serial.parseInt();
int estadoM3A = Serial.parseInt();
int estadoM4 = Serial.parseInt();
int estadoM4A = Serial.parseInt();

if (Serial.read() == '\n') {     //salto de linea en visual writeline
  // dato.toInt();
 izquierda = constrain(izquierda, 0, 255);
 izquierda1 = constrain(izquierda1, 0, 255);
 derecha = constrain(derecha, 0, 255);
 derecha1 = constrain(derecha1, 0, 255);
 estadoM1 = constrain(estadoM1, 0,1);
 estadoM1A = constrain(estadoM1A, 0,1);
 estadoM2 = constrain(estadoM2, 0,1);
 estadoM2A = constrain(estadoM2A, 0,1);
 estadoM3 = constrain(estadoM3, 0,1);
 estadoM3A = constrain(estadoM3A, 0,1);
 estadoM4 = constrain(estadoM4, 0,1);
 estadoM4A = constrain(estadoM4A, 0,1);
  
digitalWrite(InA, estadoM1);
digitalWrite(InA1, estadoM1A);
digitalWrite(InB, estadoM2);
digitalWrite(InB1, estadoM2A);
digitalWrite(InC,estadoM3);    //Escritura de control de giro de motores
digitalWrite(InC1, estadoM3A);
digitalWrite(InD, estadoM4);
digitalWrite(InD1, estadoM4A);
 analogWrite(EnA, izquierda);           
 analogWrite(EnB, izquierda1);
 analogWrite(EnC, derecha);     //Escritura PWM a motores
 analogWrite(EnD, derecha1);
 }
  }
}

Desde ya muchas gracias, cualquier duda consulten por si algo no entendieron bien. Atentamente Marzio.