package lejos.nxt.addon; import lejos.nxt.SensorPort; /* * WARNING: THIS CLASS IS SHARED BETWEEN THE classes AND pccomms PROJECTS. * DO NOT EDIT THE VERSION IN pccomms AS IT WILL BE OVERWRITTEN WHEN THE PROJECT IS BUILT. */ /** * LServo, Lattebox Servo, is a abstraction to model any RC Servo (continous and non continous) plugged to * LSC, Lattebox Servo Controller. * * @author Juan Antonio Brenha Moral * */ public class LServo extends LMotor{ private int min_angle = 0; private int max_angle = 2000; private int init_angle = 1000; /** * Constructor * * @param port * @param location * @param servoName * @param SPI_PORT * */ public LServo(SensorPort port, int location, String servoName, byte SPI_PORT){ super(port,location,servoName,SPI_PORT); } /** * * Constructor with the feature to set min and max angle * * @param port * @param location * @param servoName * @param SPI_PORT * @param min_angle * @param max_angle * */ public LServo(SensorPort port, int location, String servoName, byte SPI_PORT,int min_angle, int max_angle){ super(port,location,servoName,SPI_PORT); this.min_angle = min_angle; this.max_angle = max_angle; } /** * * Constructor with the feature to set min, max and init angle * * @param port * @param location * @param servoName * @param SPI_PORT * @param min_angle * @param max_angle * @param init_angle * */ public LServo(SensorPort port, int location, String servoName, byte SPI_PORT,int min_angle, int max_angle,int init_angle){ super(port,location,servoName,SPI_PORT); this.min_angle = min_angle; this.max_angle = max_angle; this.init_angle = init_angle; } /** * Method to set an Angle in a RC Servo. * * @param angle * */ public void setAngle(int angle){ this.setPulse(angle); } /** * * Method to know the angle * * @return the angle * */ public int getAngle(){ return this.getPulse(); } /** * Set Minimal angle. Useful method to calibrate a Servo * * @param minAngle the minimum angle * */ public void setMinAngle(int minAngle){ this.min_angle = minAngle; } /** * Set Maximum angle. Useful method to calibrate a Servo * * @param maxAngle * */ public void setMaxAngle(int maxAngle){ this.max_angle = maxAngle; } /** * Method to set minimal angle * */ public void goToMinAngle(){ this.setAngle(this.min_angle); } /** * Method to set maximum angle * */ public void goToMaxAngle(){ this.setAngle(this.max_angle); } /** * Method to set medium angle * */ public void goToMiddleAngle(){ float middle = (this.min_angle + this.max_angle) / 2; this.setAngle(Math.round(middle)); } /** * Method to set medium angle * */ public void goToInitAngle(){ this.setAngle(this.init_angle); } /** * Classic forward method for continous RC Servos * */ public void forward(){ this.setAngle(0); } /** * Classic backward method for continous RC Servos * */ public void backward(){ this.setAngle(2000); } }