All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.silverspoon.bulldog.devices.actuators.movement.LinearMove Maven / Gradle / Ivy

There is a newer version: 0.3.0
Show newest version
package io.silverspoon.bulldog.devices.actuators.movement;

import io.silverspoon.bulldog.core.util.BulldogUtil;
import io.silverspoon.bulldog.devices.actuators.Actuator;

public class LinearMove implements Move {

   private double toPosition;
   private int milliseconds;

   public LinearMove(double toPosition, int milliseconds) {
      this.milliseconds = milliseconds;
      this.toPosition = toPosition;
   }

   @Override
   public void execute(Actuator actuator) {
      if (milliseconds <= 0) {
         new DirectMove(toPosition).execute(actuator);
      } else {
         double startPosition = actuator.getPosition();
         double delta = Math.abs(startPosition - toPosition);
         int amountSteps = (int) (milliseconds / actuator.getRefreshIntervalMilliseconds());
         double stepSize = delta / amountSteps;
         for (int i = 0; i < amountSteps; i++) {
            if (startPosition < toPosition) {
               actuator.setPosition(actuator.getPosition() + stepSize);
            } else {
               actuator.setPosition(actuator.getPosition() - stepSize);
            }
            BulldogUtil.sleepMs(actuator.getRefreshIntervalMilliseconds());
         }
      }
   }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy