Stap 4: Synchroniseren graven
Dit is de subroutine die de graven synchroniseert. Duurt het verschil tussen de graven, en afhankelijk van hoe groot het is, het zal de andere bedieningssleutel vertragen door een bepaald bedrag te compenseren. Zie de opmerkingen in de code voor betere uitleg van elke regel. Er zijn enkele Serial.prints() opgenomen dat kunnen hebben de opmerkingen verwijderd voor foutopsporing.
void FWDsync() { int diff = count[0] - count[1];//calculate difference diff = abs(diff);//remove negative //Serial.print(" Diff - "), Serial.print(diff); if (diff >= 10) { if (count[0] > count [1]) spd[0] = FWDspd - 10; //if actuator 0 is faster, slow it down else spd[2] = FWDspd - 10; //else, slow actuator 1 if (diff >= 20) { if (count[0] > count [1]) spd[0] = FWDspd - 20; //if actuator 0 is faster, slow it down else spd[2] = FWDspd - 20; //else, slow actuator 1 if (diff >= 30) { if (count[0] > count [1]) spd[0] = FWDspd - 30; //if actuator 0 is faster, slow it down else spd[2] = FWDspd - 30; //else, slow actuator 1 if (diff >= 40) { if (count[0] > count [1]) spd[0] = 0; //if too out of sync, stop actuator else spd[2] = 0; //if too out of sync, stop actuator }//end if diff>40 }//end if diff>30 }//end if diff>20 }//end if diff>10 else spd[0] = spd[2] = maxSpeed; //if not out of sync, apply full speed //Serial.print(" ACT1 counts - "), Serial.print(count[0]); //Serial.print(" ACT2 counts - "), Serial.print(count[1]); }//end FWDSync