Arduino automated robot

Hello, I'm currently studying and a part of my recent project is to drive a robot arm using an arduino. I have a bit of experience using arduinos from projects last year but confess I am by no means an expert and would still class myself as a relative beginner.
The idea behind this part of the project is to activate the robot arm when an InfraRed sensor is activated. The arm will then move to this location, collect/pick up the item and move it to a weighing station. Once the item is weighed the arduino will make a decision if the weight is correct or not and the either move the item onto the next conveyor belt or move the item to the reject bin.
I'm making use of a lynxmotion SSC-32U board connected to the TX and GND pins on thearduino to send the robot commands. This has worked well.
The problem I've had is when I've been adding the IR sensors. The first test I've done is with only one to carry out the original move from the first conveyor to the weighing station. This worked fine so I repeated the code adding two more IR sensors to mimic the output from the weigh station (I'm going to use a load cell but haven't got on to this yet but will likely code something like if weight > x this is correct, if weight < x this is incorrect - but also subject to tolerance). I was able to add the second sensor okay and tested it fine. I added the third in the same manner but this is where I experienced problems. The robot would continually carry out the third operation. I thought it was a problem with the sensor and replaced it with one of the ones I know to be working, still no luck. Tried a couple of others but still the problem. I reverted back to the two sensors to recheck my work and see if I'd made a mistake somewhere, this is where my main problem has cropped up. The robot now continually carries out the first operation without the sensor being energised. I've tried resetting the arduino, reloading the code but it continually does the first operation. The LED on the lynxmotion does flash before it moves which suggests that the arduino is sending the signal. It seems very odd, almost as if there is a bit of a 'back log' of operations waiting to be carried out. I tried testing sensor two to see if it would carry out the next operation and eventually it did (after several repeats of operation one).
Can anyone give me some advice as to where I'm going wrong.

(Not sure how to add my code to this post so if someone could also advise on this I will post it...)

Code as follows (for two IR sensors)

const int Proxy1 = 8;
const int Proxy2 = 4;

int Proxy1State = 0;
int Proxy2State = 0;

void setup()
{
Serial.begin(9600);
pinMode(Proxy1, INPUT);
pinMode(Proxy2, INPUT);
}

void homes()
{
Serial.println("#1 P500 T1000");   //jaws servo
delay(1000);
Serial.println("#3 P2300 T1000");   //shoulder servo
delay(1000);
Serial.println("#4 P1600 T1000");   //waist servo
delay(1000);
}

void collect()
{
Serial.println("#3 P1500 T1000");   
delay(2500);
Serial.println("#4 P600 T1000");   
delay(2500);
Serial.println("#3 P2300 T1000");   
delay(2500);
}

void grip()
{
Serial.println("#1 P2500 T2000");   
delay(2500);
}

void loadcell()
{
Serial.println("#3 P1800 T3000");   
delay(2500);
Serial.println("#4 P1600 T4000");   
delay(2500);
Serial.println("#3 P2300 T3000");   
delay(2500);
}

void released()
{
Serial.println("#1 P500 T1000");   
delay(2500);
}

void correct()
{
Serial.println("#3 P1800 T3000");   
delay(2500);
Serial.println("#4 P2500 T4000");   
delay(2500);
Serial.println("#3 P2300 T3000");   
delay(2500);
}

void reject()
{
Serial.println("#3 P1800 T3000");   
delay(2500);
Serial.println("#4 P2000 T4000");   
delay(2500);
Serial.println("#3 P2300 T3000");   
delay(2500);
}

void loop()

{
Proxy1State = digitalRead(Proxy1);
Proxy2State = digitalRead(Proxy2);

{
if(Proxy1State == HIGH)     //move object from first conveyor to weighing station;

{
homes();
delay(2000);
collect();
delay(2000);
grip();
delay(2000);
loadcell();
delay(2000);
released();
delay(2000);
}

{
if(Proxy2State == HIGH)   //incorrect object move to reject bin;
{
loadcell();
delay(2000);
grip();
delay(2000);
reject();
delay(2000);
released();
delay(2000);
}
}
}
}

The type of sensor I'm using is one of these:

http://eu.banggood.com/Wholesale-Warehouse-Obstacle-Avoidance-Sensor-Module-Infrared-Reflection-wp-Uk-913818.html?currency=GBP&createTmp=1&utm_source=google&utm_medium=shopping&utm_content=saul&utm_campaign=Electronic-xie-ukw&gclid=CNGGq7rLkscCFZQZtAodAWMLDA