We are trying to use the Rev Pneumatic Hub and can’t seem to get it to enable our compressor. We know the compressor works because we followed the manual instructions found here. We are using java and our code looks like below. I’ve tried the Compressor class and the PnuematicHub class and niether enable the compressor. We are trying to use the Analog pressure sensor which is accurately reading pressure when we manually turn on the compressor.
public class Robot extends TimedRobot {
public PneumaticHub ph = new PneumaticHub();
// Compressor compressor = ph.makeCompressor();
Compressor compressor = new Compressor(1, PneumaticsModuleType.REVPH);
public static CTREConfigs ctreConfigs;
private RobotContainer robotContainer;
private Command autoChooser;
// private Ultrasonic ultrasonic = new Ultrasonic();
/**
* This function is run when the robot is first started up and should be used for any
* initialization code.
*/
@Override
public void robotInit() {
ctreConfigs = new CTREConfigs();
// Instantiate our RobotContainer. This will perform all our button bindings,
// and put our
// autonomous chooser on the dashboard.
robotContainer = new RobotContainer();
ph.enableCompressorAnalog(0, 120);
// compressor.enableAnalog(0, 120);
}
...
I could be wrong, but I think that the compressor only works once a solenoid has been instantiated and in teleop or auto. I think this is a change this year. However, we have not gotten ours to run yet this year either so this is mostly conjecture.
I created a solenoid but that didn’t seem to help either. Getting a bunch of too since I’m trying to print the Compressor status in Robot Periodic, System.out.println(ph.getCompressor());.
HAL: CAN Receive has Timed Out
Error at frc.robot.Robot.robotPeriodic(Robot.java:61): HAL: CAN Receive has Timed Out
edu.wpi.first.hal.REVPHJNI.getCompressor(Native Method)
edu.wpi.first.wpilibj.PneumaticHub.getCompressor(PneumaticHub.java:153)
frc.robot.Robot.robotPeriodic(Robot.java:61)
edu.wpi.first.wpilibj.IterativeRobotBase.loopFunc(IterativeRobotBase.java:328)
edu.wpi.first.wpilibj.TimedRobot.startCompetition(TimedRobot.java:131)
edu.wpi.first.wpilibj.RobotBase.runRobot(RobotBase.java:373)
edu.wpi.first.wpilibj.RobotBase.startRobot(RobotBase.java:463)
frc.robot.Main.main(Main.java:24)
I think your problem is the parameters for enableCompressorAnalog. It takes a minPressure and a maxPressure argument. The PH will keep the pressure in between these two, so if you have the min set to 0, it won’t turn on the compressor until the tanks are empty. Try setting the min pressure to something like 100 psi.
I got it working. Had to move the Analog sensor from Port 1 to Port 0. Just replicated what this person did, Rev Analog Pressure Sensor Reading - #5 by Sky_Captain. I can’t find anything in the docs/API about how to determine what port to use or to set a different port.
B. REV Robotics P/N REV-11-1107
The analog output of the sensor must be connected directly to analog input 0 of the PH
(with firmware version 22.0.2 or newer) controlling the compressor