View Single Post
  #4   Spotlight this post!  
Unread 05-02-2013, 15:49
Team3266Spencer's Avatar
Team3266Spencer Team3266Spencer is offline
Team Captain and Lead Programmer
AKA: Spencer Lanman
FRC #3266 (Robots-R-US)
Team Role: Programmer
 
Join Date: Oct 2011
Rookie Year: 2012
Location: Richmond, Indiana
Posts: 280
Team3266Spencer is an unknown quantity at this point
Re: Encoder's PID functional but getRate method not-functional???

The Drivetrain subsystem code:

Code:
package edu.wpi.first.wpilibj.templates.subsystems;

import edu.wpi.first.wpilibj.*;
import edu.wpi.first.wpilibj.command.Subsystem;
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
import edu.wpi.first.wpilibj.templates.RobotMap;
import edu.wpi.first.wpilibj.templates.commands.UserShooter;

/**
 *
 * @author Spencer, Team 3266
 */

public class Shooter extends Subsystem implements PIDOutput, PIDSource {

    Victor spinner;
    Encoder spinnerEncoder;
    PIDController pid;
    
    double rpm = 0;
    
    public void initDefaultCommand() {
        setDefaultCommand(new UserShooter());
    }
    
    public Shooter() {
        spinner = new Victor(RobotMap.spinnerVictor);
        
        spinnerEncoder = new Encoder(RobotMap.spinnerEncoderA, RobotMap.spinnerEncoderB);
        //spinnerEncoder.setPIDSourceParameter(Encoder.PIDSourceParameter.kRate);
        spinnerEncoder.setDistancePerPulse(RobotMap.spinnerEncoderDistancePerPulse);
        
        pid = new PIDController(RobotMap.spinnerKp, RobotMap.spinnerKi, RobotMap.spinnerKd, this, this);
        pid.setContinuous(true);
    }
    
    public void startEncoder() {
        spinnerEncoder.start();
        pid.enable();
    }
    
    public void stopEncoder() {
        spinnerEncoder.stop();
        spinnerEncoder.reset();
        pid.disable();
        pid.reset();
    }
    
    public void setSpinner(double rpm) {
        if(this.rpm!=rpm) {
            pid.reset();
            pid.enable();
            this.rpm = rpm;
        }
        pid.setSetpoint(rpm/60);
    }
    
    public void stopSpinner() {
        setSpinner(0.0);
    }

    public void pidWrite(double d) {
        spinner.set(d);
    }

    public double pidGet() {
        double rate = spinnerEncoder.getRate();
        SmartDashboard.putNumber("Shooter Speed", rate*60);
        return(rate);
    }
}
__________________
2012: Buckeye Regional, Queen City Regional, Human Player
2013: Queen City Regional, Buckeye Regional, Crossroads Regional
Shooter Operator
2014: Crossroads Regional, Queen City Regional
Catapult Operator
2015: Georgia Southern Classic Regional (Winner), Queen City Regional
Chainsaw Operator
Want to talk? TeamSpeak: team3266.noip.me

Last edited by Team3266Spencer : 05-02-2013 at 20:53.
Reply With Quote