== Servo Motor Control Robots must be able to interact with the environment around them too. Many types of actuators are used in FRC robotics; one of them is the [https://wpilib.screenstepslive.com/s/currentCS/m/java/l/599703-repeatable-low-power-movement-controlling-servos-with-wpilib Servo Motor]. A servo motor is a special type of motor that can rotate to a precise position, usually between 0 and 180 degrees. They come in a variety of sizes and strengths. You can connect a servo motor to any of the [http://www.ni.com/pdf/manuals/375274a.pdf#_OPENTOPIC_TOC_PROCESSING_d443e2165 PWM ports] on the !RoboRIO. Examine the PWM ports and identify which row of pins are ground ([[Image(GroundSymbol.png,25px)]], +6V, and Signal (S). Make sure you connect them to the proper pins on the Servo motor: black or brown goes to Ground, red or orange goes to +6V, yellow/white/blue goes to Signal. You can read more about servo motors [https://learn.sparkfun.com/tutorials/servo-trigger-hookup-guide/all here] Create another program using the !TimedRobot java template and name it !ServoTest. Modify the generated code as follows: * Add the following imports: {{{ import edu.wpi.first.wpilibj.XboxController; import edu.wpi.first.wpilibj.GenericHID.Hand; import edu.wpi.first.wpilibj.Servo; }}} * declare variable for the Xbox controller and [https://wpilib.screenstepslive.com/s/currentCS/m/java/l/599703-repeatable-low-power-movement-controlling-servos-with-wpilib servo motor] in the Robot class {{{ private XboxController xbox; private Servo servo; }}} * in robotInit() instantiate the controller and motor objects {{{ xbox = new XboxController(0); // Xbox controller on port 0 servo = new Servo(1); // Servo connected to PWM 1 }}} * in teleopPeriodic() read the xbox controller and adjust the servo motor accordingly {{{ // Read xbox controller left joystick x axis // value returned is between -1.0 and 1.0 double x = xbox.getX(Hand.kLeft); // Servo motors are controlled on a scale of 0.0 to 1.0 // so re-scale the X value to that range (-1.0->0, 0->0.5, 1.0->1.0) x = (x + 1.0) / 2; // Set servo motor position based on joystick servo.set(x); }}} Connect a Servo motor to PWM port 1 on the roboRIO and run your program. You'll need to press the Enable button on the driver station to put the robot in Teleop mode so that teleopPeriodic() is called repeatedly. * Extra credit: use buttons on the Xbox controller to set the servo to a specific position (e.g. 45-degrees, 90-degrees, 135-degrees).