Changes between Version 35 and Version 36 of ControlSystems/SoftwareTeam/Training/GettingStarted/IntroRobotJava


Ignore:
Timestamp:
Oct 30, 2019, 10:35:36 PM (6 years ago)
Author:
David Albert
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ControlSystems/SoftwareTeam/Training/GettingStarted/IntroRobotJava

    v35 v36  
    1313* [wiki://ControlSystems/SoftwareTeam/Training/GettingStarted/ClosedLoopControl Closed Loop Control]
    1414
    15 == Third program: Servo Motor Control
    16 
    17 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]
    18 
    19 Create another program using the !TimedRobot java template and name it !ServoTest. Modify the generated code as follows:
    20 * Add the following imports:
    21 {{{
    22 import edu.wpi.first.wpilibj.XboxController;
    23 import edu.wpi.first.wpilibj.GenericHID.Hand;
    24 import edu.wpi.first.wpilibj.Servo;
    25 }}}
    26 * 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
    27 {{{
    28    private XboxController xbox;
    29    private Servo servo;
    30 }}}
    31 * in robotInit() instantiate the controller and motor objects
    32   {{{
    33     xbox = new XboxController(0); // Xbox controller on port 0
    34     servo = new Servo(1);         // Servo connected to PWM 1
    35   }}}
    36 * in teleopPeriodic() read the xbox controller and adjust the servo motor accordingly
    37   {{{
    38     // Read xbox controller left joystick x axis
    39     // value returned is between -1.0 and 1.0
    40     double x = xbox.getX(Hand.kLeft);
    41     // Servo motors are controlled on a scale of 0.0 to 1.0
    42     // so re-scale the X value to that range (-1.0->0, 0->0.5, 1.0->1.0)
    43     x = (x + 1.0) / 2;
    44     // Set servo motor position based on joystick
    45     servo.set(x);
    46   }}}
    47 
    48 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.
    49 
    50 * Extra credit: use buttons on the Xbox controller to set the servo to a specific position (e.g. 45-degrees, 90-degrees, 135-degrees).
    5115
    5216== Fourth program: DC Motor Control