@@ -1398,8 +1398,11 @@ void Robot::readSensors(){
1398
1398
}
1399
1399
}
1400
1400
if (perimeter.signalTimedOut (0 )) {
1401
- if ( (stateCurr != STATE_OFF) && (stateCurr != STATE_MANUAL) && (stateCurr != STATE_STATION) && (stateCurr != STATE_STATION_CHARGING) && (stateCurr != STATE_REMOTE)) {
1402
- Console.println (F (" Error: perimeter too far away" ));
1401
+ if ( (stateCurr != STATE_OFF) && (stateCurr != STATE_MANUAL) && (stateCurr != STATE_STATION)
1402
+ && (stateCurr != STATE_STATION_CHARGING) && (stateCurr != STATE_STATION_CHECK)
1403
+ && (stateCurr != STATE_STATION_REV) && (stateCurr != STATE_STATION_ROLL)
1404
+ && (stateCurr != STATE_STATION_FORW) && (stateCurr != STATE_REMOTE)) {
1405
+ Console.println (" Error: perimeter too far away" );
1403
1406
addErrorCounter (ERR_PERIMETER_TIMEOUT);
1404
1407
setNextState (STATE_ERROR,0 );
1405
1408
}
@@ -1584,18 +1587,18 @@ void Robot::setNextState(byte stateNew, byte dir){
1584
1587
rollDir = dir;
1585
1588
if (stateNew == STATE_STATION_REV){
1586
1589
motorLeftSpeedRpmSet = motorRightSpeedRpmSet = -motorSpeedMaxRpm;
1587
- stateEndTime = millis () + stationRevTime;
1590
+ stateEndTime = millis () + stationRevTime + motorZeroSettleTime ;
1588
1591
} else if (stateNew == STATE_STATION_ROLL){
1589
1592
motorLeftSpeedRpmSet = motorSpeedMaxRpm;
1590
1593
motorRightSpeedRpmSet = -motorLeftSpeedRpmSet;
1591
- stateEndTime = millis () + stationRollTime;
1594
+ stateEndTime = millis () + stationRollTime + motorZeroSettleTime ;
1592
1595
} else if (stateNew == STATE_STATION_FORW){
1593
1596
motorLeftSpeedRpmSet = motorRightSpeedRpmSet = motorSpeedMaxRpm;
1594
1597
motorMowEnable = true ;
1595
- stateEndTime = millis () + stationForwTime;
1598
+ stateEndTime = millis () + stationForwTime + motorZeroSettleTime ;
1596
1599
} else if (stateNew == STATE_STATION_CHECK){
1597
1600
motorLeftSpeedRpmSet = motorRightSpeedRpmSet = -motorSpeedMaxRpm/2 ;
1598
- stateEndTime = millis () + stationCheckTime;
1601
+ stateEndTime = millis () + stationCheckTime + motorZeroSettleTime ;
1599
1602
1600
1603
} else if (stateNew == STATE_PERI_ROLL) {
1601
1604
stateEndTime = millis () + perimeterTrackRollTime;
0 commit comments